SQL Server:选择字符串不包含特定值的位置
我需要选择Department10中名称不包含字符串LA的员工SQL Server:选择字符串不包含特定值的位置,sql,sql-server,select,Sql,Sql Server,Select,我需要选择Department10中名称不包含字符串LA的员工 Select * From EMP Where Cod_Dept = 10 下面是使用CHARINDEX的另一个选项: 如果您有空值,并且希望返回空值: SELECT * FROM EMP WHERE Cod_Dept = 10 AND (CHARINDEX('LA' , Name , 0) = 0) OR (CHARINDEX('LA' , Name , 0) Is Null); .工作得很好。谢谢似乎是一场永无休止的辩论,
Select *
From EMP
Where Cod_Dept = 10
下面是使用CHARINDEX的另一个选项: 如果您有空值,并且希望返回空值:
SELECT *
FROM EMP
WHERE Cod_Dept = 10
AND (CHARINDEX('LA' , Name , 0) = 0) OR (CHARINDEX('LA' , Name , 0) Is Null);
.工作得很好。谢谢似乎是一场永无休止的辩论,查林德斯对诸如此类的人。我更喜欢使用charindex进行通配符搜索,原因有两个:一是传递变量更容易,而不必将字符串与%连在一起;二是更重要。。。表演无论如何,如果没有前导通配符,+1LIKE是可搜索的,因此在这种情况下可以轻松击败CHARINDEX。通过快速浏览结果,可以推测该链接中未测试的内容。使用CHARINDEX,您不必担心像%这样的转义字符。二者的基数估计可能不同。为什么@MartinSmith同意。。。没有像这样的前导通配符是最好的选择。也就是说,我对LIKE和CHARINDEX的测试没有链接中的结果那么引人注目,有一个明显的差异,支持CHARINDEX+Cod_Dept=10,而Name not LIKE“%LA%”不会返回Name为NULL的行@MartinSmith
SELECT *
FROM EMP
WHERE Cod_Dept = 10
AND CHARINDEX('LA' , Name , 0) = 0;
SELECT *
FROM EMP
WHERE Cod_Dept = 10
AND (CHARINDEX('LA' , Name , 0) = 0) OR (CHARINDEX('LA' , Name , 0) Is Null);