Sql server 将XML中的ASCII转换为可读的SQL varchar

Sql server 将XML中的ASCII转换为可读的SQL varchar,sql-server,tsql,Sql Server,Tsql,我使用以下语法将XML读入表: SELECT date, time, phonenumber FROM OPENXML(@hDoc, 'orders/mail/order') WITH ( date [varchar](20) 'date', time [varchar](20) 'time', phonenumber [varchar](20) '../set[@id="c"]/set[@id="adr"]/set[@id="billing"]/property[@id="8"]' ) 在

我使用以下语法将XML读入表:

SELECT date, time, phonenumber
FROM OPENXML(@hDoc, 'orders/mail/order')
WITH 
(
date [varchar](20) 'date',
time [varchar](20) 'time',
phonenumber [varchar](20) '../set[@id="c"]/set[@id="adr"]/set[@id="billing"]/property[@id="8"]'
)
在XML中有以下值:

<![CDATA[ 0494&#47;12 34 56 ]]>


其中包含需要转换为斜杠的ASCII 47。当然还有很多其他的特殊角色。有没有一种方法可以很容易地将其转换为正确的格式?

不清楚您的意思。XML使用Unicode,而不是ASCII<代码>不是一个值;这是加价。该值为“0494/;12 34 56”。“/;”看起来也像标记,但由于它位于CDATA区域中,所以它不是。据推测,这是XML文档作者的意图,可能是XML文档作者的意图,即该值是HTML标记。(HTML也使用Unicode,而不是ASCII。)除非你知道,否则如何正确处理它?@TomBlodget文本0494/;12 34 56应该是0494/12 34 56,ASCII中的字符47是斜杠。XML使用Unicode:。HTML使用Unicode:如果你想破解它,你可能会替换/;与/。但要做得更好,您必须了解XML文档作者的意图。如果目的是HTML,那么T-SQL不是最好的工具。也许是SQL-CLR。