ルーマニア語の発音区別符号(ĂÂÎȘȚ
)をラテン文字の同等の文字(、)に置き換える関数を作成しようとしていますAAIST
。
SQL Serverのreplace
機能はを扱うĂ
、Â
とÎ
うまく。
ただし、Ș
とには奇妙な問題があるようȚ
です。文字列の先頭にある場合にのみ置き換えられます。
以下の場合の例:
select replace(N'Ș', N'Ș', N'-')
-- '-' # OK
select replace(N'ȘA', N'Ș', N'-')
-- '-A' # OK
select replace(N'AȘ', N'Ș', N'-')
-- 'AȘ' # WHAT??
select replace(N'ȘAȘ', N'Ș', N'-')
-- '-AȘ' # WHAT??
SQL Sever 2008R2とSQLServer2012の両方でこの動作を再現することができました。
これらの一見奇妙な結果の説明はありますか?それとも単なるバグでしょうか?
私のデフォルトのデータベース照合はSQL_Latin1_General_CP1_CI_AS
です。
照合の問題です。
一見、信じられないので再現しなければなりませんでしたが、あなたの質問にも同じ問題がありました。
適切な照合を試してみると、次のように機能します。
select replace(N'AȘ' COLLATE Latin1_General_BIN, N'Ș', N'-')
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加