2017-08-01 10 views
-3

nvarcharカラムを持つテーブルがあります。私はwhere句のように複数のエントリを検索する必要があります。テーブルから複数のエントリを選択します.nvarcharカラムのwhere句を使用します。

私はchecknumberが1906572のときのように一方のエンティティ一度に検索することができるよ、私は複数のエンティティ「 LIKE」checknumber(nvarchar)のデータを取得する必要があり、これらのすべてのいずれかである:663096、663105、 663107号、663109号、663110号に記載されているように、非常に時間がかかる。

メートル下の検索: を選択し、請求書、バウチャー、N '%654217' のようなchecknumberが結果を得ることが、ときmはどこchecknumber = N'654217' またはどこchecknumberは= '654217を得ていない' M置くメートルbankdetailsから日付任意の出力。

私は約2000のチェックナンバーを持っています。

あなたにありがとう

+4

があなたの現在のクエリを投稿してください。 – Sinto

+2

...とDDL。そして[mcve]を読んで行動してください。 – philipxy

+0

データ型がNVARCHARの場合、( '663096'、 '663105'の)エンティティがNvarcharで動作しない場合、 '動作しません 'とはどういう意味ですか?エラーが発生します。 –

答えて

2

、検査せずに答えを投稿しないで、(「『』」)内のエンティティは、Nvarcharでは動作しません場合は、そのデータ型がNVARCHARであることに注意してくださいSQL where句の代わりentity = 1906572を使用してentity in (663096, 663105, 663107, 663109, 663110)

1

データタイプを混同しないように注意してください。比較値が文字列でなければなりませんのでので、単一引用符を含めるようにしてください:データ型を混在

checknumber = '1906572' 
checknumber in ('663096', '663105', '663107', '663109', '663110') 

は、最適な実行計画を選択するオプティマイザのためにそれが難しくなります。

0

これを試してみてください:

select * 
from [TableName] 
where checknumber in ('663096', '663105', '663107', '663109', '663110') 
関連する問題