我想要一个简短形式的 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/

10-12 00:19
查看更多