web-dev-qa-db-ja.com

Yを含まないがXを含むSQL選択文字列

このデータベースフィールドに文字列があるが、特定の値が含まれていないすべてのインスタンスを選択しようとしています。

例:「赤い椅子」の前に「大きな」が付いていない「赤い椅子」のすべてのインスタンスを選択しようとしています。次の表でそのクエリを実行すると、IDが2の行のみが返されます。

 + ---------- + -------------- + --------- + 
 | ID |コンテンツ| 
 + ---------- + ------------------------ + 
 | 1 |大きな赤い椅子| 
 | 2 |赤い椅子があります| 
 | 3 | | 
 + ---------- + ------------------------ + 

前もって感謝します!

16
Katzumi

以下を使用できます。

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

編集:LIKE一致文字列を修正

15
kand

これにより、contentで「赤い椅子」というフレーズが1回だけ出現すると想定して、必要なものが得られます。それが複数回表示される可能性がある場合(「赤い椅子は大きな赤い椅子」)、どのような結果が必要ですか?

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%'

それは速くはならないでしょう!

3
Paul Creasey

Xで始まり、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%';
0
onedaywhen