我希望通过split
中的string
标记替换空格来xml
sql
。我有一个用户定义的函数如下:
CREATE FUNCTION [dbo].[stringtoxml]
(
@string_to_split NVARCHAR(MAX),
@delimiter NVARCHAR(100)
)
RETURNS XML
AS
BEGIN
DECLARE @xml XML
SET @xml = N'<t>' + REPLACE(@string_to_split, @delimiter,'</t><t>') + '</t>'
RETURN @xml
END
我将xml
存储在字段employee_name中,datatype
为xml
。在另一个表中,我希望能够读取第一个元素作为第一个名称,第二个元素作为中间首字母,如果格式是一个字母字符后跟一个句号,第三个元素作为姓氏。
@string_to_split
中有无效字符 - 例如'John O'Smith'。
有没有办法绕过无效字符而不必这样做:
DECLARE @xml XML
SET @xml = N'<t>' + REPLACE(REPLACE(REPLACE(@string_to_split,'''','''),'&','&'), @delimiter,'</t><t>') + '</t>'
RETURN @xml
然后在我正在读取另一个表中的各个元素时,执行另一个替换以删除&amp;和&amp; amp。
答案 0 :(得分:1)
您可以使用for xml path
“XML化”字符串。
查询:
declare @string_to_split nvarchar(max) = '&,<,>,'',"'
declare @delimiter nvarchar(100) = ','
declare @xml xml
set @xml = N'<t>' + replace((select @string_to_split for xml path('')), @delimiter, N'</t><t>') + N'</t>'
select @xml
结果:
<t>&</t>
<t><</t>
<t>></t>
<t>'</t>
<t>"</t>