Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server:选择字符串不包含特定值的位置_Sql_Sql Server_Select - Fatal编程技术网

SQL Server:选择字符串不包含特定值的位置

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); .工作得很好。谢谢似乎是一场永无休止的辩论,

我需要选择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);

.

工作得很好。谢谢似乎是一场永无休止的辩论,查林德斯对诸如此类的人。我更喜欢使用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);