LIKE(Transact-SQL) のドキュメントから :
次の表で問題を再現しました:
DECLARE @t TABLE(x NCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE x LIKE N'%S';
結果:
(0 row(s) affected)
ただし、NVARCHAR
を使用する場合 代わりに、この問題は発生しません:
DECLARE @t TABLE(x NVARCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE x LIKE N'%S';
結果:
x
-----
nanaS
ただし、NVARCHAR
に変換しても、元のテーブルでは目的の結果が得られませんでした。 WHERE
条項:
DECLARE @t TABLE(x NCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE CONVERT(NVARCHAR(25),x) LIKE N'%S';
結果:
(0 row(s) affected)
したがって、1つの潜在的な回避策は、最初に適切なデータ型を使用することです(また、常にUnicode文字列のプレフィックスをN'properly'
。データ型を正しくできない場合は、RTRIM()
を使用できます。 Aushinによって投稿された回避策ですが、HLGEMのコメントも念頭に置いてください。