Ich versuche, alle Instanzen auszuwählen, bei denen dieses Datenbankfeld eine Zeichenfolge enthält, aber keinen bestimmten Wert enthält.
Beispiel: Ich versuche, jede Instanz von "rotem Stuhl" auszuwählen, bei der "roter Stuhl" nicht von "groß" ausgeführt wird. Wenn ich diese Abfrage in der folgenden Tabelle ausführen würde, würde ich nur die Zeile mit der ID von 2 zurückgeben:
+ ---------- + -------------- + --------- + | ID | Inhalt | + ---------- + ------------------------ + | 1 | Der große rote Stuhl | | 2 | Ich habe einen roten Stuhl | | 3 | Ich habe einen großen Stuhl | + ---------- + ------------------------ +
Danke im Voraus!
Sie können verwenden:
LIKE '%red chair%' AND NOT LIKE '%big%'
edit : Korrigierte LIKE übereinstimmende Zeichenketten
Dies wird bekommen, was Sie wollen, vorausgesetzt, der Ausdruck "roter Stuhl" kommt nur einmal in content
vor. Wenn es mehr als einmal vorkommen kann ("Der rote Stuhl ist ein großer roter Stuhl"), welches Ergebnis wollen Sie?
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%'
Es wird aber nicht schnell gehen!
Wählen Sie eine Zeichenfolge aus, die mit X beginnt und X nicht enthält
WITH T
AS
(
SELECT *
FROM (
VALUES ('xenophilia'),
('xbox'),
('regex')
) AS T (c)
)
SELECT *
FROM T
WHERE c LIKE 'x%'
AND c NOT LIKE '_%x%';