1

Field1其中有值 183872 但以下查询不返回任何内容

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

4 回答 4

4

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

select * 
from table1 
where 'Abbott,Christina D - 183872' like '%' + cast(field1 as varchar(10)) + '%'
于 2013-06-20T16:24:22.623 回答
3

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

SQLServer 工作正常。

于 2013-06-20T16:22:59.157 回答
1

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

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

您可以执行以下操作

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

这将带回所有包含 183872 的记录。

于 2013-06-20T16:27:02.397 回答
0

如另一个答案中所述,IN 用于针对一组值进行测试。

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

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

select * from table1 
where CHARINDEX(field1,'Abbott,Christina D - 183872') > 0
于 2013-06-20T16:30:53.413 回答