Sql-Server 2008 R2
照合はChinese_Simplified_Pinyin_100_CI_AS
. 私が使うとき
select 1 where N'⑦' = N'7'
1を出力しましたが、演算子を次のように変更するとlike
select 1 where N'⑦' like N'7'
何も出力しません。
like
オペレーターの行動はなぜそんなに変なのですか?私は何か見落としてますか?
Sql-Server 2008 R2
照合はChinese_Simplified_Pinyin_100_CI_AS
. 私が使うとき
select 1 where N'⑦' = N'7'
1を出力しましたが、演算子を次のように変更するとlike
select 1 where N'⑦' like N'7'
何も出力しません。
like
オペレーターの行動はなぜそんなに変なのですか?私は何か見落としてますか?
バグのようです。LIKE
ワイルドカードのないパターンに対しては、常に同じものを=
返す必要があります。
他のユーザーは、次のクエリを実行してこの動作を確認できます。
SELECT
CASE WHEN N'⑦' COLLATE Chinese_Simplified_Pinyin_100_CI_AS = N'7' THEN 'Y' ELSE 'N' END,
CASE WHEN N'⑦' COLLATE Chinese_Simplified_Pinyin_100_CI_AS LIKE N'7' THEN 'Y' ELSE 'N' END
-- Y N