これが私のクエリです:
SELECT *
FROM client_info
WHERE (cid LIKE 'G%' OR cid LIKE 'H%' OR cid LIKE 'J%')
AND (client_name NOT LIKE 'P4%' OR client_name NOT LIKE 'P5%')
結果には、P4 と P5 で始まるクライアント名が含まれています。NOT LIKE 句の何が問題になっていますか?
他の人があなたに正しい答えを与えました - OR の代わりに AND を使う必要があります。しかし、その理由を理解する価値があります。たとえば、P5_JONES というクライアントの場合、なぜこの患者がリストに表示されるのでしょうか? その名前は「P4%」のようではないためです。はい、P5% のようなものですが、そこに OR がある場合、条件を満たすにはこれらの式の 1 つだけが真である必要があります。
これを試して:
選択する * FROM client_info WHERE (cid LIKE 'G%' OR cid LIKE 'H%' OR cid LIKE 'J%') AND (client_name NOT LIKE 'P4%' AND client_name NOT LIKE 'P5%')
OR 演算子ではなく AND を使用する必要があります。NOT LIKE so を使用しているため、いずれかの条件をチェックする必要があります。
NOT LIKE 条件では OR の代わりに AND を使用する必要があります