将行编号转换为一个字符串解决方案二

本文介绍了使用SQL进行字符串拼接的方法,特别是利用STUFF函数实现行转列的问题解决技巧。通过具体实例展示了如何将多行数据转换为一行,并用逗号分隔值。

DECLARE @temp TABLE (Id INT,Value CHAR (5))
INSERT INTO @temp
SELECT '1'
,'09:01'
UNION
SELECT '1'
,'12:05'
UNION
SELECT '2'
,'08:04'
UNION
SELECT '2'
,'17:09'
UNION
SELECT '3'
,'99888'

SELECT *
FROM @temp

SELECT id

, stuff ((SELECT ','+ rtrim (value)
FROM @temp
WHERE id = a.id
FOR xml path ('')),1,1,'') AS [values]
FROM @temp a
GROUP BY a.id

使用函数字符拼凑函数 stuff

Stuff(expression1_Str,startIndex,lengthInt,expression2_Str)

函数共有四个参数,其功能是将expression1_Str中

         自startIndex位置起删除lengthInt个字符,

                       然后将expression2插入到expression1_Str中的startIndex位置

 

 

 

字符串连接(行转列问题)

SELECT @Results = ISNULL(@Results + ',', '') + CAST(tn.NewsId AS VARCHAR) FROM dbo.TB_News tn ORDER BY tn.NewsId DESC SELECT @Results

 

字符串合并

Declare @Results varchar(MAX)
SELECT @Results = ISNULL(@Results + ''', ''', '') + CAST(tn.ExternalName AS VARCHAR)
FROM ConfigurationMaster.dbo.Currency tn
WHERE tn.CurrencyDecimalPlaceCnt = 3
ORDER BY tn.ExternalName ASC
SELECT @Results

转载于:https://www.cnblogs.com/fery/archive/2010/10/31/1865767.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值