J'essaie de sélectionner toutes les instances où ce champ de base de données contient une chaîne mais ne contient pas de valeur spécifique.
Exemple: J'essaie de sélectionner chaque instance de "chaise rouge" où "chaise rouge" n'est pas précédé de "grand". Si je devais exécuter cette requête dans le tableau suivant, je ne récupérerais que la ligne portant l'ID 2:
+ ---------- + -------------- + --------- + | ID | contenu | + ---------- + ------------------------ + | 1 | La grande chaise rouge | | 2 | J'ai une chaise rouge | | 3 | J'ai une grande chaise | + ---------- + ------------------------ +
Merci d'avance!
Vous pouvez utiliser:
LIKE '%red chair%' AND NOT LIKE '%big%'
edit : Correction de chaînes similaires à LIKE
Cela donnera ce que vous voulez, en supposant que l'expression "chaise rouge" ne se produise qu'une seule fois dans content
. Si cela peut apparaître plus d'une fois («La chaise rouge est une grande chaise rouge»), quel résultat voulez-vous?
SELECT * FROM Furniture
WHERE content LIKE '%red chair%' AND content NOT LIKE '%big red chair%'
WHERE content like '%red chair%'
AND content not like '%big red chair%'
Mais ça ne va pas être rapide!
Sélectionnez la chaîne qui commence par X et ne contient pas X
WITH T
AS
(
SELECT *
FROM (
VALUES ('xenophilia'),
('xbox'),
('regex')
) AS T (c)
)
SELECT *
FROM T
WHERE c LIKE 'x%'
AND c NOT LIKE '_%x%';