Sql server 如何获取sql server xml列的xml安全版本
有没有办法在SQLServer中获取xml列的xml安全版本 xml安全是指转义特殊字符,如,,&,等等 我想避免自己做替换。sql server中是否有内置函数Sql server 如何获取sql server xml列的xml安全版本,sql-server,xml,sql-server-2005,tsql,Sql Server,Xml,Sql Server 2005,Tsql,有没有办法在SQLServer中获取xml列的xml安全版本 xml安全是指转义特殊字符,如,,&,等等 我想避免自己做替换。sql server中是否有内置函数 我想要实现的是将xml内容存储到另一个xml属性中。xml列的内容是xml。根据定义,这是XML安全的 是否需要在另一个XML文档的XML元素或属性中包含列中的XML?然后将外部XML保存为新文档中的字符串。我假设XML安全是指转义XML特殊标记。如果希望在另一个XML文档中包含一个XML列,则有两个选项: 将列投影为[*]:选择…,
我想要实现的是将xml内容存储到另一个xml属性中。xml列的内容是xml。根据定义,这是XML安全的
是否需要在另一个XML文档的XML元素或属性中包含列中的XML?然后将外部XML保存为新文档中的字符串。我假设XML安全是指转义XML特殊标记。如果希望在另一个XML文档中包含一个XML列,则有两个选项: 将列投影为[*]:选择…,xmlcolumn为[*]。。。从…起对于xml路径。。。这将在结果XML中嵌入列的XML内容。如果列具有值,则结果将与值相同。 将列投影为列名:选择…,xmlcolumn。。。从…起对于xml路径。。。这将插入列的内容作为值,即它将转义它。与上面相同的值将产生elementvalue/element。 如果你的问题是关于其他事情的,那么你必须以适当的方式重新措辞,并正确使用术语。不要发明除了你自己没人懂的新术语 更新: 如果要在列中插入XML值,则无需执行任何操作。客户端库知道如何处理正确的转义。只要你写的代码正确。请记住,XML不是字符串,永远不应该被视为字符串。如果在客户机中编写XML,请使用适当的XML库等。将XML传递到SQL Server时,请使用适当的类型:。存储过程应使用适当的参数类型:。阅读时,请使用适当的方法读取XML:。在miriad设计器LINQ to SQL、EF等中声明类型也是如此。最终,不需要手动转义XML字符。如果您发现自己在这样做,那么您使用了错误的API,您必须回到绘图板 阅读是一个好的开始 最后,要在描述用表B的XML列更新表A的XML列时操作XML,具体地说,可以使用,并使用以下命令在XQuery中绑定表B列:
在您的评论中,您威胁XML是一个字符串,正如我已经说过的,您永远不应该这样做:字符串和XML就像水和油一样。这不是对这个问题的直接回答,但对于任何试图在TSQL中用XML转义字符串的人来说,我写了一个小函数:
CREATE FUNCTION escapeXml
(@xml nvarchar(4000))
RETURNS nvarchar(4000)
AS
BEGIN
declare @return nvarchar(4000)
select @return =
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(@xml,'&', '&')
,'<', '<')
,'>', '>')
,'"', '"')
,'''', ''')
return @return
end
GO
另一种更简单的xml转义字符串的方法是使用以下内容:
SELECT @String FOR XML PATH('')
e、 g
然后从那里使用@stringxmlsafe??你这是什么意思??请解释一下——在我看来,这不是一个常用的表达方式……你说的避免替换自己是什么意思?你说的这个替代品是什么?我打赌他认为他需要翻译@Chris。我的意思是我不想替换为
SELECT @String FOR XML PATH('')
DECLARE @Input NVARCHAR(4000) = 'bacon & eggs'
DECLARE @String = (SELECT @Input FOR XML PATH(''))