候需要将在数据库中查询的结果集(显示为不同列)中每一列的数据整合成一条用某一符号(例如“;”)相连的一条数据,如下:
转换为数据:
在程序中控制比较简单,可以查出datatable,然后循环获取。本文介绍在SQL存储过程中直接得出结果。
代码如下:
Label开始
declare @DocID varchar(50)
select @DocID=DocID from Information where InfoID=@Fid
declare @TABEL table(
LABEL varchar(50)
)
INSERT INTO @TABEL
SELECT LL.LABEL FROM INFOLABEL AS IL
LEFT JOIN LABEL AS LL ON IL.LABELID = LL.LABELID
WHERE IL.DOCID = @DOCID
DECLARE @LABELS VARCHAR(200)
DECLARE @LABEL VARCHAR(50)
SET @LABELS = ''
--删除空和null的数据
DELETE FROM @TABEL WHERE LABEL IS NULL OR LABEL = ''
WHILE(EXISTS(SELECT TOP 1 1 FROM @TABEL))
BEGIN
SELECT TOP 1 @LABEL = LABEL FROM @TABEL
SET @LABELS = @LABELS + @LABEL + ';'
DELETE FROM @TABEL WHERE LABEL = @LABEL
END
IF(@LABELS <> '' AND @LABELS IS NOT NULL)
BEGIN
SET @LABELS = SUBSTRING(@LABELS,0,LEN(@LABELS))
END
---Label结束
大体流程:
1.获取结果集;
2.建立临时表:
declare @TABEL table(
LABEL varchar(50)
)
3.往临时表里插入查到的结果集;
4.删除临时表中为空的列;
5.用while循环 每循环一条将查询的数据加上间隔符号“;”插入到变量@LABELS 中;
6.每一次循环最后删除刚刚循环的这条数据,一边进入下一条数据,防止重复;
7.如果变量@LABELS 不为空不为NULL,用SUBSTRING函数截取,去掉最后一个“;”。