2009-07-15 58 views
4

我們是SQL Server 2008上,我試圖找出是否有辦法有一個存儲過程返回我的成績在1個CSV場SQL Server 2008中的行1 CSV場

例如:

SELECT TOP 4 carModels 
FROM dbo.Models 

將返回

Jeep 
Honda 
Mitsubishi 
Ford 

我想這回在1場像這樣: 吉普車,本田,三菱,福特

我知道我們可以用匯編,臨時表或服務器端代碼來做到這一點,但寧願不去那條路線。是否有任何提示/技巧可以建議獲得我要找的結果?

回答

9

試試這個:

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) 
+0

如何將csv值加入到與其他相關數據的選擇中? – kacalapy 2015-07-08 18:23:46

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。

+0

這不起作用,下面是它返回的信息:_,Jeep ,, JeepHonda ,, Jeep ,, Jee,Jeep ,, Jee_ – 2009-07-15 15:28:05

+0

哦,你可以只需調整@Str的子字符串以便不包含, – northpole 2009-07-15 15:57:16