このデータベースフィールドに文字列があるが、特定の値が含まれていないすべてのインスタンスを選択しようとしています。
例:「赤い椅子」の前に「大きな」が付いていない「赤い椅子」のすべてのインスタンスを選択しようとしています。次の表でそのクエリを実行すると、IDが2の行のみが返されます。
+ ---------- + -------------- + --------- + | ID |コンテンツ| + ---------- + ------------------------ + | 1 |大きな赤い椅子| | 2 |赤い椅子があります| | 3 | | + ---------- + ------------------------ +
前もって感謝します!
以下を使用できます。
LIKE '%red chair%' AND NOT LIKE '%big%'
編集:LIKE一致文字列を修正
これにより、content
で「赤い椅子」というフレーズが1回だけ出現すると想定して、必要なものが得られます。それが複数回表示される可能性がある場合(「赤い椅子は大きな赤い椅子」)、どのような結果が必要ですか?
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%'
それは速くはならないでしょう!
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%';