8

次の文を書こうとしています。

WHERE field LIKE 'Pandora' AND field Not Like 'radio', 'digital', 'internet';

翻訳: フィールドが Pandora のようで、ラジオ、デジタル、またはインターネットのようではない場所を選択します。

AND を挟んで Not Like を 3 回書かずにこのステートメントを書く方法はありますか?

ありがとうございました

4

3 に答える 3

9

「フィールド」が単なる単語ではない場合、次のようにする必要があります。

SELECT * FROM table WHERE field LIKE '%Pandora%' AND field NOT LIKE '%radio%' AND field NOT LIKE '%internet%' and field NOT LIKE '%digital%';
于 2013-10-25T00:45:11.737 に答える
6

まず第一に、クエリは冗長です。fieldisの場合、他の条件はデフォルトで false を返します。LIKE 'pandora'

、、、および とfield等しくなる可能性のある方法はありません。'Pandora''radio''digital''internet'

その結果、次の例を使用してクエリを簡素化できます。

SELECT *
  FROM example
 WHERE field = 'Pandora';

2 つの条件が 2 つの別個のフィールドを表す場合、REGEXP演算子を使用してDRY 原則を適用しながら、さらにパターン マッチングを行うことができます。

SELECT *
  FROM example
 WHERE field_1 = 'Pandora'
   AND field_2 NOT REGEXP '^(radio|digital|internet)$';
于 2018-11-07T23:41:08.877 に答える