webentwicklung-frage-antwort-db.com.de

SQL-Auswahlzeichenfolge, die kein Y enthält, jedoch X enthält

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!

16
Katzumi

Sie können verwenden:

LIKE '%red chair%' AND NOT LIKE '%big%'

edit : Korrigierte LIKE übereinstimmende Zeichenketten

15
kand

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%'
4
Larry Lustig
WHERE content like '%red chair%'
AND content not like '%big red chair%'

Es wird aber nicht schnell gehen!

3
Paul Creasey

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%';
0
onedaywhen