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 に答える