寻找一个简洁的 SQL 查询

Looking for a neat SQL query

有人可以给我一些建议,是否可以缩短这一行:

and docs.Filename not like '%^ABC.%' 
and docs.Filename not like 'Element%' 
and docs.Filename not like 'Sheet%' 
and docs.Filename not like '%^Copy%'

像这样:

and docs.Filename not like ('%^ABC.%' OR 'Element%' OR 'Sheet%' OR '%^Copy%')

现在 SQL Server 2014 Management Studio 出现问题;它告诉我这是 'OR'.

的错误语法

对于这几个值,这可能稍微 更长 ,但是随着您添加更多值并使匹配的值更紧密地放在一起,它会更好地缩放 repetition.The 关键是将项目放在 Table Value Constructor 中。这也让您以后可以轻松转换为实际的 table。

SELECT docs.*
FROM docs
WHERE NOT EXISTS (
    SELECT 1 FROM (VALUES 
       ('%^ABC.%'), ('Element%'), ('Sheet%'), ('%^Copy%')
    ) matcher(val)
    WHERE docs.Filename LIKE matcher.val
 ) 

De Morgan 说你可以改写为:

and not ( docs.Filename like '%^ABC.%' or docs.Filename like 'Element%' or
  docs.Filename like 'Sheet%' or docs.Filename like '%^Copy%' )

除非您正在玩 Code Golf,否则这不是什么重大变化。