2

私たちのデータベースでは、翻訳に関する情報は 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

ご覧のとおり、キリル文字のエントリは完全に混ざり合っていますが、エスペラントのエントリは分音記号を失いました。

どうすれば修復できるのでしょうか?

4

1 に答える 1