繁体   English   中英

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

[英]How to select each row into a variable in SQL Server

我们有一个将定界列表转换为表格的功能:

select * from dbo.fn_rpt_ParseValues('abc|123|test','|')

结果:

abc
123
test

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

@Name = 'abc'
@Phone = '123'
@Comment = 'test'

谢谢!

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
DECLARE @Split table(
     RowIndex int IDENTITY(1,1)
    ,Item varchar(200));
INSERT INTO @Split 
    SELECT * from dbo.fn_rpt_ParseValues('abc|123|test','|');

DECLARE @Name   varchar(50);
DECLARE @Phone  varchar(50);
DECLARE @Comment varchar(100);
SET @Name   =  (SELECT Item FROM @Split WHERE RowIndex=1);
SET @Phone  =  (SELECT Item FROM @Split WHERE RowIndex=2);
SET @Comment = (SELECT Item FROM @Split WHERE RowIndex=3);

假设行是有序的,那么您想做一个枢轴将其变成列。

另一个选择是让您的解析函数(或修改版本)返回单行结果集(表值函数),并使用CROSS / OUTER APPLY将其追加到行中:

http://msdn.microsoft.com/en-us/library/ms174853.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM