查询不喜欢列表的更简洁的方法



我有以下SQL查询:

Select X, Y  
FROM Table.dbo 
WHERE DESCRIPTION NOT LIKE 'X' 
    AND DESCRIPTION NOT LIKE 'Y' 
    AND DESCRIPTION NOT LIKE 'Z' 
    AND DESCRIPTION NOT LIKE 'A' 
    AND DESCRIPTION NOT LIKE 'B' 
    AND DESCRIPTION NOT LIKE 'C'  
    AND DESCRIPTION NOT LIKE 'D';

有没有更有效的方法来编写这个查询?

理想情况下DESCRIPTION NOT LIKE 'Y','Z','A','B','C','D'等等。

谢谢!

您可以使用。

Select X, Y  
FROM YourTable
WHERE DESCRIPTION NOT LIKE '[A-DYZ]' 

我想你可能是想在模式中包含一个尾随通配符?在这种情况下

WHERE DESCRIPTION NOT LIKE '[A-DYZ]%' 

如果图案任意不同,您可以使用

SELECT X,
       Y
FROM   YourTable
WHERE  NOT EXISTS (SELECT *
                   FROM   (VALUES ('%cars%'),
                                  ('%boats%'),
                                  ('%trains%')) V(C)
                   WHERE  DESCRIPTION LIKE V.C) 

或者使用CLR集成。安装正则表达式函数并搜索与Regex (cars|boats|trains) 不匹配的行

最新更新