如何防止tsql转义标记?
我不完全确定这是你想要的。但是......
的样本数据:
declare @T table
(
Col varchar(50)
)
insert into @T values ('<span>my field content 1</span>')
insert into @T values ('<span>my field content 2</span>')
查询针对此表中的等价的:
select Col
from @T
for xml raw, elements, type
从这个结果将是一行和一列,它保存XML文档看起来像这样:
<row>
<Col><span>my field content 1</span></Col>
</row>
<row>
<Col><span>my field content 2</span></Col>
</row>
这就是它的方式有,看看您是否想要<span>my field content 1</span>
为元素col
的值。
你所要求的可以这样创建:
select cast(Col as xml) as Col
from @T
for xml raw, elements, type
而这也将是这样一个XML列返回一行:
<row>
<Col>
<span>my field content 1</span>
</Col>
</row>
<row>
<Col>
<span>my field content 2</span>
</Col>
</row>
这里有<span>my field content 1</span>
为子节点到Col
不作为值。
如果您将XML转义出来,当您从XML中提取它们时,您将得到正确的值。在TSQL中是这样的,但应该在其他语言中是相同的。
declare @X xml
set @X =
'<row>
<Col><span>my field content 1</span></Col>
</row>
<row>
<Col><span>my field content 2</span></Col>
</row>'
select T.N.value('Col[1]', 'varchar(50)') as Col
from @X.nodes('/row') as T(N)
结果:
Col
--------------------------------------------------
<span>my field content 1</span>
<span>my field content 2</span>
这伟大的工作。谢谢。 – 2012-03-12 15:03:11