我试图传递逗号分隔的字符串,例如:" 101:string1,102:string2"进入存储过程并从中创建临时表。临时表有两列,一个整数和一个字符串。对于此示例,它将有两行。逗号分隔行,冒号分隔两列。谁知道我怎么做到这一点?我正在使用sql server。提前谢谢!
编辑:顺便说一下,我不是在询问如何创建临时表,而只是如何创建函数。
答案 0 :(得分:5)
您可以尝试Table-Valued Function而不是临时表。像这样:
CREATE FUNCTION ListToTable
(
@list nvarchar(4000)
)
RETURNS @return TABLE
(
n int,
s nvarchar(15)
)
AS
BEGIN
SET @list = NULLIF(ltrim(rtrim(@list)),'')
DECLARE @xml AS XML = CAST('<root><row><n>' +
REPLACE(REPLACE(@list,
',', '</s></row><row><n>'),
':', '</n><s>') +
'</s></row></root>' AS XML) ;
INSERT INTO @return (n, s)
SELECT root.row.value('n[1]', 'int')
, root.row.value('s[1]', 'nvarchar(4000)')
FROM @xml.nodes('/root/row') as root(row)
RETURN
END
用法:
select * from dbo.ListToTable('101:string1,102:string2')
输出:
n s
----------- ---------------
101 string1
102 string2