在我们的数据库中,关于翻译的信息存储在一个 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
正如人们所看到的,西里尔语条目完全混合在一起,而世界语条目已经失去了变音符号。
知道如何修复它吗?