こんにちは私はデータベース内のすべての行(SQL Server)の文字éを次のクエリを実行してテキスト内に見つけようとしています。 (a)は、それらの両方が異なる数の行を返すされており、(b)は彼らが指定された文字を持たない行を返すされています SQLサーバーのUnicode文字を比較する方法は?
SELECT COUNT(*) FROM t_question WHERE patindex(N'%[\xE9]%',question) > 0;
SELECT COUNT(*) FROM t_question WHERE patindex(N'%[\u00E9]%',question) > 0;
は、しかし、私は二つの問題を発見しました。
私は正規表現を構築して、Unicodeを正確に比較していますか?
EDIT:
質問欄は、データ型nvarchar
を使用して格納されます。 次のクエリは正しい結果を示します。
SELECT COUNT(*) FROM t_question WHERE question LIKE N'%é%';
だから、最初のものは\、0,0、Eまたは9とマッチングされますか?実際にクエリでユニコードを指定する方法はありますか? – rkg
@Ravi - 何らかの理由で文字列 'WHERE patindex(N '%' + NCHAR(0xE9)+ '%'、質問)> 0 'を使用したくない場合は、' WHERE patindex %é% '、question)> 0' –
ありがとうございました。これは本当に助けになりました。私はPATINDEXが正規の正規表現をサポートしているという印象を受けました。 – rkg