Field1
中的值为183872,但以下查询不返回任何内容
select *
from table1
where field1 in ('Abbott,Christina D - 183872')
答案 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