4

親愛なる友人、私は今まで考えられなかった問題に直面しました。私の問題は単純すぎるようですが、解決策を見つけることができません。NVarchar型で、標準のペルシア文字で埋められたSQLServerデータベース列があります。LIKE演算子を組み込んだ非常に単純なクエリを実行しようとすると、クエリ用語がテーブルに存在することがわかっていても、結果セットは空になります。これは、正しく機能しない非常に単純なクエリの例です。SELECT * FROM T_Contacts WHERE C_ContactName LIKE'%ف%'

فはペルシア文字であり、ContactName coulmnには、その文字を含む複数のエントリが含まれています。

式をどのように書き直すか、またはどのような変更を適用する必要があるかを教えてください。私のデータベースの照合はSQL_Latin1_General_CP1_CI_ASであることに注意してください。

どうもありがとうございます

4

2 に答える 2

6

また、これらの値がNVARCHAR(私はそうだといいのですが)として保存されている場合は、文字列リテラルのプレフィックスを常に使用して、N'..'Unicode以外への不要な変換が戻らないようにする必要がありますVARCHAR

したがって、次のように検索する必要があります。

SELECT * FROM T_Contacts 
WHERE C_ContactName COLLATE Persian_100_CI_AS LIKE N'%ف%'
于 2011-01-15T09:27:16.417 に答える
3

すべきではありません:

 SELECT * FROM T_Contacts WHERE C_ContactName LIKE N'%ف%'

つまり、比較する文字列の前にあるので、 ?Nのように扱います。nvarchar

于 2011-01-15T09:26:45.250 に答える