the*_*man 32 xml sql-server sql-server-2005
基本上我有一个名为XMLtype 的列TEXT; 这不能因为其他原因而改变,但我想知道如何将其转换为XML.
它给了我一个错误
XML解析:第1行,第39个字符,无法切换编码
当试图这样做.是否还有它仍然将它格式化为XML?我真的陷入了困境.
列内数据:
<?xml version="1.0" encoding="utf-16"?>
<Record>
<UserGuid>c624a356-9f18-403c-b404-790e79034c7d</UserGuid>
</Record>
Run Code Online (Sandbox Code Playgroud)
这是演员SQL代码:
SELECT CAST(XML AS XML).value('(/Record/UserGuid)[1]', 'NVARCHAR(max)')
FROM tbl_Module_RequestForms_Items
Run Code Online (Sandbox Code Playgroud)
mar*_*c_s 52
你的问题是:你有一个XML encoding="utf-16",但你的列是一个非Unicode列......
假设您无法将其更改为NTEXT任何一个,您必须执行两个嵌套CAST来实现您正在寻找的内容:
SELECT
CAST(CAST(XML AS NTEXT) AS XML).value('(/Record/UserGuid)[1]', 'NVARCHAR(max)')
FROM
tbl_Module_RequestForms_Items
Run Code Online (Sandbox Code Playgroud)
首先,你需要强制转换为NTEXT(或NVARCHAR(MAX)),然后你必须将结果转换为XML,然后才能使用它.
提示:删除那些"其他原因"并将其转换为XML数据类型,如果您确实需要将其用作XML .....
Eli*_*ain 35
您应该替换encoding="utf-16"为encoding="utf-8"或''(blank)然后执行您的操作.
一个.转换encoding="utf-16"为encoding="utf-8"
SELECT
CAST(
REPLACE(CAST([xml] AS VARCHAR(MAX)), 'encoding="utf-16"', 'encoding="utf-8"')
AS XML).value('(/Record//UserGuid/node())[1]', 'NVARCHAR(max)') as UserGuid
from tbl_Module_RequestForms_Items
Run Code Online (Sandbox Code Playgroud)
湾 替换encoding="utf-16"为''(blank)
SELECT
CAST(
REPLACE(CAST([xml] AS VARCHAR(MAX)), 'encoding="utf-16"', '')
AS XML).value('(/Record//UserGuid/node())[1]', 'NVARCHAR(max)') as UserGuid
from tbl_Module_RequestForms_Items
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
69326 次 |
| 最近记录: |