日期:2014-05-17  浏览次数:20567 次

如果将SQL两列数据串成一个字符
1、数据库显示如下:
A列     B列
001    代码
002    名称
003    单位
004    数量

2、如果将上面这个结果串成下面这个字符串(两个字段之间用空格,每行用逗号隔开)

001 代码,002 名称,003  单位,004 数量
------最佳解决方案--------------------
declare @str varchar(2000)=''
select @str=@str+','+A+' '+B from TB
select stuff(@str,1,1,'')
------其他解决方案--------------------
--CREATE TABLE tb(A列 VARCHAR(10),    B列 VARCHAR(10) )
--INSERT INTO TB
--SELECT '001',    '代码'
--UNION ALL 
--SELECT '002',    '名称'
--UNION ALL 
--SELECT '003' ,   '单位'
--UNION ALL 
--SELECT '004'  , '数量'

WITH test AS (
SELECT RTRIM(A列)+' '+RTRIM(B列) AS col
FROM TB)

select DISTINCT
stuff((select ','+col from test b 
       for xml path('')),1,1,'') 'col'
from test a

/*
001 代码,002 名称,003 单位,004 数量
*/

------其他解决方案--------------------
谢谢两位,测试1楼的方法可以实现我想要的效果。