現象
日本語照合順序 (Japanese、Japanese_90、Japanease_XJIS_100、Japanese_Unicode) を使用している場合、繰り返し符号や長音が同じ文字として扱われる場合があります。
この結果、ユーザーは意図しない結果を得る場合があります。
例えば、以下のクエリでは繰り返し符号 ‘ヽ’ と長音‘ー’を ‘々’ と比べ、同一文字であれば☆に変換します。
---------------------------------
SELECT REPLACE('繰り返し記号 ヽ 長音 ー','々','☆') as REPLACE
---------------------------------
上記のクエリの結果は以下の通りです。
‘ヽ’ と ‘ー’ は ‘々’ と異なる文字ですが, 同じ文字として扱われます。
この結果、 ‘ヽ’ と ‘ー’ は ☆に変換されます。
---------------------------------
繰り返し記号 ☆ 長音 ☆
---------------------------------
解決方法
Japanese_BIN を照合順序として使用します。
例えば、 以下のようにCOLLATE 句を使用します。
---------------------------------
SELECT REPLACE('繰り返し記号 ヽ 長音 ー','々' COLLATE Japanese_BIN,'☆') as REPLACE;
---------------------------------
この結果、以下の結果を得ることが出来ます。
---------------------------------
繰り返し記号 ヽ 長音 ー
---------------------------------