问题:
有一SQL Server表,内容如下:
name alias age
张三 23
李四 24
王五
卢芳 小芳
操利
李焱
季霞 小霞 22
周中继
张延 张慎
孙起 21
…………
…………
我想把name字段中的各个值用“,”连接起来,怎么办呢?
比如上表的结果应该是:
张三,李四,王五,卢芳,…………
[解决方法]
declare @test1 table (name varchar(10))
insert @test1
select '张三' union
select '李四' union
select '王五' union
select '卢芳' union
select '操利' union
select '李焱' union
select '季霞' union
select '周中继' union
select '张延' union
select '孙起'
declare @sql varchar(1000)
set @sql = ''
select @sql = @sql + ',' + name from @test1
set @sql = stuff(@sql, 1, 1, '')
print @sql
stuff说明:
下例通过在第一个字符串 (abcdef) 中删除从第二个位置(字符 b)开始的三个字符,然后在删除的起始位置
插入第二个字符串,创建并返回一个字符串。
SELECT STUFF('abcdef', 2, 3, 'ijklmn')
GO
下面是结果集:
---------
aijklmnef
(1 row(s) affected)
在下面的第一个示例中,将变量 @var1 赋给 Generic Name 作为它的值。在 Customers 表中不存在为
CustomerID 指定的值,因此对该表的查询不返回行。该变量将保留 Generic Name 值。
USE Northwind
DECLARE @var1 nvarchar(30)
SELECT @var1 = 'Generic Name'
SELECT @var1 = CompanyName
FROM Customers
WHERE CustomerID = 'ALFKA'
SELECT @var1 AS 'Company Name'
结果如下:
Company Name
----------------------------------------
Generic Name
在下例中,子查询用于给 @var1 赋值。为 CustomerID 请求的值不存在,因此子查询不返回值并将该变
量设
为 NULL。
USE Northwind
DECLARE @var1 nvarchar(30)
SELECT @var1 = 'Generic Name'
SELECT @var1 =
(SELECT CompanyName
FROM Customers
WHERE CustomerID = 'ALFKA')
SELECT @var1 AS 'Company Name'
结果如下:
Company Name
----------------------------
NULL