Basically I have a column named XML that is of type TEXT; this cannot be changed for other reason, but I was wondering how I could cast it to XML.
It gives me an error
XML parsing: line 1, character 39, unable to switch the encoding
when trying to do this. Is there anyways around it to still get it formatted to XML? I’m really stuck at this point.
Data within column:
<?xml version="1.0" encoding="utf-16"?>
<Record>
<UserGuid>c624a356-9f18-403c-b404-790e79034c7d</UserGuid>
</Record>
Here is the cast SQL code:
SELECT CAST(XML AS XML).value('(/Record/UserGuid)[1]', 'NVARCHAR(max)')
FROM tbl_Module_RequestForms_Items
Your problem is: you have XML with an
encoding="utf-16", but your column is a non-Unicode column……Assuming that you cannot change it to
NTEXTeither, you have to do two nestedCASTto achieve what you’re looking for:First, you need to cast to
NTEXT(orNVARCHAR(MAX)), and then you have to cast that result toXML, before you can use it.Tip: remove those “other reasons” and convert this to
XMLdatatype if you really need to use it as XML …..