1

SQL Server 2019 のテキストから特定の Unicode 記号文字を削除/置換しようとしています。
使用しているサーバー/DB には、Latin1_General_CI_AS 照合順序があります。
サーバー/DBの照合順序を変更できないため、これを試しました(ほとんどの場合は機能しますが、一部のシンボルは機能しません)。

環境:
SQL Server バージョン:
Microsoft SQL Server 2019 (RTM-GDR) (KB4583458) - 15.0.2080.9 (X64) 2020 年 11 月 6 日 16:50:01 Copyright (C) 2019 Microsoft Corporation Developer Edition (64-bit) o​​n Windows 10 Pro 10.0 (ビルド 19041: )

サーバー照合: Latin1_General_CI_AS
データベース照合: Latin1_General_CI_AS

この例は期待どおりに機能します。

select replace(N'☋a' collate Latin1_General_100_CI_AI_SC, N'☋' collate Latin1_General_100_CI_AI_SC, N'XXX')
select replace(N'a☋' collate Latin1_General_100_CI_AI_SC, N'☋' collate Latin1_General_100_CI_AI_SC, N'XXX')

出力:
XXXa
aXXX

この例は、Unicode 記号 (⚶) が最初の文字である場合にのみ機能しますが、その前に別の文字がある場合は機能しません。

select replace(N'⚶a' collate Latin1_General_100_CI_AI_SC, N'⚶' collate Latin1_General_100_CI_AI_SC, N'XXX')
select replace(N'a⚶' collate Latin1_General_100_CI_AI_SC, N'⚶' collate Latin1_General_100_CI_AI_SC, N'XXX')

出力:
XXXa (正しい)
a⚶ (間違っている)

置換が一部の文字/文字の順序で機能し、一部の文字では機能しない理由を知っている人はいますか?

4

1 に答える 1