declare @xml xml
DECLARE @idoc int select @xml='<Root>
<List>
<contentstr> aaaa bbbb </contentstr>
</List>
</Root>'select @xml = REPLACE(CONVERT(NVARCHAR(MAX),@xml),' ','@') --转一下exec sp_xml_preparedocument @idoc output,@xml
SELECT replace(contentstr,'@',' ') AS contentstr --再转回来
FROM OPENXML(@idoc, '/Root/List',2)
WITH(contentstr Nvarchar(max))
DECLARE @idoc int select @xml='<Root>
<List>
<contentstr> aaaa bbbb </contentstr>
</List>
</Root>'select @xml = REPLACE(CONVERT(NVARCHAR(MAX),@xml),' ','@') --转一下exec sp_xml_preparedocument @idoc output,@xml
SELECT replace(contentstr,'@',' ') AS contentstr --再转回来
FROM OPENXML(@idoc, '/Root/List',2)
WITH(contentstr Nvarchar(max))
多谢关注。
上面只是举个例子,实际的情况下xml内容会非常长,本身也会有@等特殊字符,这样转来转去会很耗时,有没有更好的办法?