私たちのデータベースでは、翻訳に関する情報は XML 列に格納されており、データ型.value()
の関数を使用して抽出します。xml
ターゲット データ型として使用nvarchar(100)
しますが、変換後に値が破損します。
サンプルコードは次のとおりです。
DECLARE @x Xml
SET @x =
'<TRANSLATIONS>
<TRANSLATION Lang="de">Probenname</TRANSLATION>
<TRANSLATION Lang="pt">Tipo da Amostra</TRANSLATION>
<TRANSLATION Lang="ru">Вид пробы</TRANSLATION>
<TRANSLATION Lang="eo">Testaĵnomo</TRANSLATION>
</TRANSLATIONS>'
SELECT TR.lentry.value('@Lang','varchar(2)') AS Lang,
TR.lentry.value('.','nvarchar(100)') AS Text
FROM @x.nodes('/TRANSLATIONS/TRANSLATION') AS TR(lentry)
得られる出力は次のとおりです。
Lang Text
---- ----------
de Probenname
pt Tipo da Amostra
ru ??? ?????
eo Testajnomo
ご覧のとおり、キリル文字のエントリは完全に混ざり合っていますが、エスペラントのエントリは分音記号を失いました。
どうすれば修復できるのでしょうか?