我想要一个简短形式的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)
但遗憾的是这种语法不起作用?!非常感谢所有提示和建议。
答案 0 :(得分:5)
很抱歉,我认为你不会发现任何陈述比你问题中的第一句更短或更简单。
答案 1 :(得分:4)
不,这不太可能。
使用De Morgan's laws之一进行此转换的时间略短,但只有几个字符不同:
SELECT *
FROM table1
WHERE NOT (field1 LIKE '%test%' OR
field2 LIKE '%test%' OR
field3 LIKE '%test%')
这个hack还有更短的时间,但是我建议反对它,因为它会降低你的查询性能,并在你改变字符串文字{{1}时引入错误的可能性可能包含下划线的内容,例如'%test%'
:
'%te_st%'
我认为你所做的是最好的解决方案。
答案 2 :(得分:1)
SELECT CASE WHEN (
(field1 NOT LIKE '%test%') AND
(field2 NOT LIKE '%test%') AND
(field3 NOT LIKE '%test%')
THEN true
ELSE false AS truthiness