Comment utiliser les AIME et non PAS COMME l'ensemble dans une requête SQL Server
J'ai cette une table SQL Server Users
avec une colonne codename
avec un grand nombre d'enregistrements, par exemple:
...
[LP]Luis
JoseLuis
[LP]Pedroso
Luis
PedroLuis
[LP]Maria
CarlosJose
MariaJose
[LP]Carlos
Pedro
...
J'ai besoin de faire une requête pour un formulaire de recherche qui ignorent tout codename
s qui contiennent [LP]
J'ai écrit et exécutez la requête suivante:
SELECT TOP (15)*
FROM [Users]
WHERE [codename] LIKE '%Luis%'
AND [codename] NOT LIKE '%[LP]%'
Cette requête ne retourne rien.
Je veux obtenir (Dans cet exemple) les dossiers:
Luis
PedroLuis
JoseLuis
Si j'ai une requête:
SELECT TOP (15) *
FROM [Users]
WHERE [codename] LIKE '%Luis%'
J'obtiens:
[LP]Luis
JoseLuis
Luis
PedroLuis
et si j'ajoute pour la requête:
AND [codename] NOT LIKE '%[LP]%'
Je ne reçois rien.
OriginalL'auteur Lewis Yuburí | 2016-03-02
Vous devez vous connecter pour publier un commentaire.
Toutes les chaînes ont une
L
ouP
, qui est ce que%[LP]%
recherche.Est un moyen d'échapper à ce schéma:
[
en le plaçant dans[]
, c'est à direcodename NOT LIKE '%[[]LP]%'
.Ok, je ne savais pas que [] est utilisé comme joker, qui a été mon erreur.. les Deux solutions fonctionnent correctement. Je vais utiliser le @Felix-Pamittan de la solution. Merci!
Linoff, Lorsque nous utilisons début % de génériques comme requête à l'indice de temps pour que la colonne sera utilisée ou non? Si non comment faire pour surmonter ce problème?
Un standard index sur une colonne de type chaîne est utilisé pour
LIKE
uniquement lorsque le modèle ne commence pas par un caractère générique.OriginalL'auteur Gordon Linoff