5

我们在 SQL Server 2008 上,我试图弄清楚是否有办法让存储过程在 1 个 CSV 字段中返回我的结果

例如:

SELECT TOP 4 carModels
FROM dbo.Models

会回来

Jeep
Honda
Mitsubishi
Ford

我希望它在 1 个字段中返回,如下所示:Jeep,Honda,Mitsubishi,Ford

我知道我们可以使用程序集、临时表或服务器端代码来做到这一点,但不希望走那条路。您是否可以建议获得我正在寻找的结果的任何提示/技巧?

4

2 回答 2

10

试试这个:

DECLARE @x varchar(8000)

SELECT TOP 4
    @x=ISNULL(@x+', ','')+carModels
    FROM dbo.Models

SELECT @x AS carModels

编辑与上面相同的答案,但这里有完整的代码来测试它......

declare @Models table (RowID int not null primary key identity(1,1), carModels varchar(20))
insert into @Models values ('Jeep')
insert into @Models values ('Honda')
insert into @Models values ('Mitsubishi')
insert into @Models values ('Ford')
insert into @Models values ('Mazda')

DECLARE @x varchar(8000)
SET @x=null
SELECT TOP 4
    @x=ISNULL(@x+', ','')+carModels
    FROM @Models

SELECT @x AS carModels

输出:

carModels
----------------------------------
Jeep, Honda, Mitsubishi, Ford

(1 row(s) affected)
于 2009-07-15T15:04:23.200 回答
0

以下可能有效。我今天没有 SQLServer 来验证。

DECLARE @Str VARCHAR(8000)
    SET @Str = SPACE(0)
    SELECT @Str = @Str + ',' + SUBSTRING(@Str + Models.Name, 1, 10)
      FROM dbo.Models
    PRINT @Str 

这是您可以在客户端上执行的操作吗?如果我可以选择,我可能会将其从数据层中删除并将其放在客户端上,并在需要时将其格式化为 CSV。

于 2009-07-15T15:03:58.927 回答