ZJA*_*JAY 7 mysql sql sql-server
我正在尝试编写以下语句:
WHERE field LIKE 'Pandora' AND field Not Like 'radio', 'digital', 'internet';
Run Code Online (Sandbox Code Playgroud)
翻译:选择字段是潘多拉(Pandora),而不是广播,数字或互联网。
有没有一种方法可以编写此语句,而不必在两次之间用AND编写Not Like 3次?
谢谢
首先,您的查询是多余的,因为如果field是,则其他条件默认返回false。LIKE 'pandora'
有没有可能的方式,field可以等于'Pandora','radio','digital',和'internet'。
因此,您可以使用以下示例简化查询:
SELECT *
FROM example
WHERE field = 'Pandora';
Run Code Online (Sandbox Code Playgroud)
如果这两个条件代表两个单独的字段,那么您可以使用REGEXP运算符来强制执行DRY 原则,同时仍然允许进一步的模式匹配:
SELECT *
FROM example
WHERE field_1 = 'Pandora'
AND field_2 NOT REGEXP '^(radio|digital|internet)$';
Run Code Online (Sandbox Code Playgroud)
如果“字段”不仅仅是一个单词,则需要执行以下操作:
SELECT * FROM table WHERE field LIKE '%Pandora%' AND field NOT LIKE '%radio%' AND field NOT LIKE '%internet%' and field NOT LIKE '%digital%';
Run Code Online (Sandbox Code Playgroud)
如果您要搜索特定单词,可以使用NOT IN()
WHERE field LIKE 'Pandora' AND field NOT IN('radio', 'digital', 'internet');
Run Code Online (Sandbox Code Playgroud)
如果您在搜索中需要通配符,%则需要使用多个LIKEs。
| 归档时间: |
|
| 查看次数: |
12025 次 |
| 最近记录: |