我想要一个简短形式的 SQL 命令(我使用的是 Oracle SQL)
SELECT * from table1
WHERE field1 not like '%test%'
AND field2 not like '%test%'
AND field3 not like '%test%'
是否有与该命令等效的语法?我在想类似的事情
SELECT * from table1
WHERE '%test%' not in (field1, field2, field3)
但不幸的是,这种语法不起作用?!非常感谢所有提示和建议。
最佳答案
不,这真的不可能。
使用 De Morgan's laws 之一的这种转换非常短,但只有几个字符差异:
SELECT *
FROM table1
WHERE NOT (field1 LIKE '%test%' OR
field2 LIKE '%test%' OR
field3 LIKE '%test%')
还有一个更短的 hack,但我建议不要这样做,因为如果将字符串文字
'%test%'
更改为可能包含的内容,它会降低查询的性能并引入错误的可能性下划线,例如 '%te_st%'
:SELECT *
FROM table1
WHERE (field1 + '_' + field2 + '_' + field3) NOT LIKE '%test%'
我认为你已经在做的是最好的解决方案。
关于sql - 如果没有字段包含字符串,则返回 true 的短 SQL 命令?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10483388/