使用in子句时,简单的SQL查询将不起作用

时间:2013-06-20 16:19:25

标签: sql-server

Field1中的值为183872,但以下查询不返回任何内容

select * 
from table1 
where field1 in ('Abbott,Christina D - 183872')

4 个答案:

答案 0 :(得分:4)

这不是in的用途。您需要使用like。另外,field1是一个数字字段吗?如果是这样,您应该转换/转换为字符串:

select * 
from table1 
where 'Abbott,Christina D - 183872' like '%' + cast(field1 as varchar(10)) + '%'

答案 1 :(得分:3)

那是因为in并不意味着“值包含在以下字符串中”,而是表示“值包含在以下值集中”。

SQLServer正常运行。

答案 2 :(得分:1)

要使查询正常工作,它必须类似于

select * 
from table1 
where field1 in ('183872','22244','2224455')

您可以执行以下操作

select * 
from table1 
where field1 like '%183872%'

这将带回183872的所有记录。

答案 3 :(得分:0)

如另一个答案所述,IN用于测试一组值。

SELECT * FROM CUSTOMERS
WHERE COUNTRY IN ('USA','CANADA','MEXICO');

您可以使用CHARINDEX()在另一个字符串中查找字符串的位置。

select * from table1 
where CHARINDEX(field1,'Abbott,Christina D - 183872') > 0