如何在SQL Server中将每一行选择为变量

use*_*480 1 sql sql-server

我们有一个将分隔列表转换为表格的函数:

select * from dbo.fn_rpt_ParseValues('abc|123|test','|')
Run Code Online (Sandbox Code Playgroud)

结果:

abc
123
test
Run Code Online (Sandbox Code Playgroud)

如何将每一行都放入SQL变量中?例如:

@Name = 'abc'
@Phone = '123'
@Comment = 'test'
Run Code Online (Sandbox Code Playgroud)

谢谢!

Mik*_*son 5

declare @S varchar(100) = 'abc|123|test'

declare @Name varchar(10)
declare @Phone varchar(10)
declare @Comment varchar(10)

select @Name = X.value('x[1]', 'varchar(10)'),
       @Phone = X.value('x[2]', 'varchar(10)'),
       @Comment = X.value('x[3]', 'varchar(10)')
from (select cast('<x>'+replace(@S, '|', '</x><x>')+'</x>' as xml)) as T(X)

select @Name, @Phone, @Comment
Run Code Online (Sandbox Code Playgroud)