T-SQL - Comment échapper à une barre oblique / entre crochets dans la clause LIKE
Je suis en train d'utiliser T-SQL COMME à l'encontre de plusieurs valeurs. Après mes recherches, la façon la plus simple semble être quelque chose de similaire à:
SELECT Column1
FROM Table_1
WHERE Column1 LIKE '[A,B,C]%'
De sorte que je peux attendre la sortie ressemble à A1,B2,C3...
Mon problème est que les éléments(A,B,C) pour mon scénario sont dans le format de "X/Y/Z" -- oui, contient slash! Et slash sera considéré comme un séparateur -- la même que la virgule. Par exemple, je veux sélectionner tous les endroits à New York, à Tokyo et à Londres, j'ai donc écrit:
WHERE Location LIKE '[US/New York, Japan/Tokyo, UK/London]%'
Mais il fait la même chose que
WHERE Location LIKE '[US,New York, Japan, Tokyo, UK, London]%'
Et il sera de retour NOUS/LA/CBD ou Tokyo/Tour de...
Quelqu'un peut-il la lumière à ma façon comment échapper à la barre oblique dans les crochets de la clause LIKE ici? Merci beaucoup à l'avance.
Voici un exemple de tableau:
DECLARE @temp TABLE (Location NVARCHAR(50))
INSERT INTO @temp (Location ) VALUES ('US/New York/A')
INSERT INTO @temp (Location ) VALUES('New York/B')
INSERT INTO @temp (Location ) VALUES ('Japan/Tokyo/C')
INSERT INTO @temp (Location ) VALUES ('Tokyo/D')
INSERT INTO @temp (Location ) VALUES ('UK/London/E')
INSERT INTO @temp (Location ) VALUES('London/F')
Et ci-dessous est mon ébauche de script:
SELECT *
FROM @temp
WHERE Location LIKE '[US/New York, Japan/Tokyo, UK/London]%'
J'attendais la sortie est:
US/New York/A
Japon/Tokyo/C
Royaume-UNI/Londres/E
mais en fait tous d'entre eux seront arrachés.
Encore une fois, de nous montrer quelques exemples de valeurs de Table_1 et la sortie que vous attendez.
OriginalL'auteur Ben S | 2013-05-31
Vous devez vous connecter pour publier un commentaire.
Il n'est pas nécessaire pour échapper à la
/
dans ce cas. Vous pouvez tout simplement utiliser une expression avec un trailing générique.Modifier basé sur le changement de l'OP
Il semble que vous pourriez avoir un malentendu à propos de la façon dont le
[]
modèle est interprété à la fonction. Lorsque vous avez un modèle de type'[US/New York]%'
, c'est dire "Trouver les valeurs qui commencent par les caractères suivantsU
,S
,/
,N
,e
,w
, (de l'espace),Y
,o
,r
, ouk
. Ainsi, un tel modèle serait de trouver une valeurSouth Africa
ouOuter Mongolia
. Il n'est pas à la recherche pour les lignes dont la valeur totale est égale àUS/New York
.Un moyen d'obtenir ce que vous cherchez, c'est d'utiliser plusieurs
Or
états:Merci Thomas, j'ai mal compris comment utiliser [] à l'intérieur comme
OriginalL'auteur Thomas
Il permettra de récupérer les X/Y/Z1,X/Y/Z,..
OriginalL'auteur neetz
Essayez celui -
Ou essayer ce -
OriginalL'auteur Devart
Essayer de séparer les séparateurs de chemin de l'valide les plages de caractères.
Cela pourrait correspondre à des chaînes de caractères comme blabla/A/A1 et xxx/B/B1
Edit: Les supports sont traités comme "une collection de caractères autorisés'. Basé sur votre reformulé la question, je pense que vous pourriez obtenir par la simple combinaison de certains des caractères génériques avec certaines valeurs littérales. Voici quelques échantillons:
Se terminant avec slash B:
Se terminant dans la barre oblique "n'importe quel caractère unique'
En commençant par Londres -- n'importe quel nombre de caractères -- se terminant dans la barre oblique "n'importe quel caractère unique'
, Londres n'importe où, se terminant dans la barre oblique "n'importe quel caractère unique'
OriginalL'auteur souplex