2013-11-01 16 views
1

我有一個SQL查詢合併所有行到一個。SQL - 如何添加一行自定義文本

我試圖在開始時只設置一個自定義。

我的問題是,總是重複它的每一個新的價值。

我該如何解決?

在此先感謝

這裏是我的代碼:

SELECT 
    STUFF ((SELECT 'Please Select' + ' : ' + Name 
      FROM Option 
      ORDER BY Name 
      FOR XML PATH('')), 1, 2, '') MergeResult 

我的結果,我需要的是這樣的:

請選擇:選項 - 選項2 - 2選項等等...... ..

我會在這一刻什麼是這樣的:

請選擇:賓得N1 - 請選擇:選項 - 請選擇:選項3

+0

這是微軟,而不是MySQL的 - 對不對? – AgRizzo

+1

只需將''請選擇'+':'+'從內部查詢移動到'STUFF'之前 – valex

回答

1

有幾個方法可以做到這一點。

移動選擇到外:

DECLARE @Option AS TABLE ([Name] varchar(30)) 
INSERT INTO @Option([Name]) 
VALUES ('Option1'), ('Option2'), ('Option3') 


SELECT 'Please Select : ' + LEFT(Options, LEN(Options) - 2) 
FROM 
(
    SELECT Name + ' - ' 
    FROM @Option 
    ORDER BY Name 
    FOR XML PATH('') 
) o (Options) 

也有COALESCE方式:

DECLARE @Option AS TABLE ([Name] varchar(30)) 
INSERT INTO @Option([Name]) 
VALUES ('Option1'), ('Option2'), ('Option3') 

DECLARE @Names VARCHAR(8000) 
SELECT @Names = COALESCE(@Names + ' - ', '') + Name 
FROM @Option 
SELECT 'Please Select : ' + @Names 
+0

yep.your are right .. it works ... hehe。非常感謝你 – user2232273

1

事情是這樣的:

SELECT 
    'Please Select' + ' : ' + 
    STUFF ((SELECT Name 
      FROM [Option] 
      ORDER BY Name 
      FOR XML PATH('')), 1, 2, '') MergeResult 

即,移動前綴外

相關問題