2013-10-03 36 views
0

我在SQL select語句中具有以下內容。它的目的是查詢一些結果,並讓它們以逗號分隔。查詢返回每個退回項目的尾隨空白字符

SUBSTRING((
     SELECT ', ' + s.jaopr 
     FROM jjops s 
     WHERE s.jajob = o.jajob 
     ORDER BY s.jaseq 
     FOR XML PATH('') 
     ), 2, 1000) 

我得到我需要的結果,但每個結果中的字符數從2個字符到5個字符不等。因此結果中會返回多餘的空格。
例子: AA , AAA , BBBBB, BBBB , CCCCC

我怎樣才能改變我的子,以便有沒有多餘的空格時,返回的結果具有小於5個字符?

我想我明白Substring是什麼,但我不完全明白XML PATH的作用,因爲我在搜索解決方案時複製了此內容。

回答

0

是否希望存儲在數據庫中的值沒有尾隨(和/或前導)空格?如果是這樣,這個問題一直在這裏找到答案:

Trimming text strings in SQL Server 2008

+0

我發現我的數據庫存儲尾隨空格。這導致我的解決方案謝謝! – Matt

0

通常使用的XML路徑,因爲你似乎在這裏使用它(嘗試在引號中加入類似於「值」的字符以獲得對它的真正預期用途的提示)是將一些通常會使用的結果集一些行數,將所有結果放在一個字符串中。

既然如此,這裏應該發生的是子字符串函數應該返回內部查詢的整個結果,從第二個字符到一千個。其結果將是,如果你有結果的五行只是在你上面沒有XML路徑選擇語句在它像這樣結束:

A 
B 
C 
D 
E 

XML路徑命令應該給你 ,A, B,C,D,E

注意逗號後的空格。看起來你正在嘗試使用子字符串來擺脫第一個逗號,但這不會擺脫中間逗號後的空格。

如果我對這些假設是正確的,那麼也許只是刪除逗號周圍的引號內的空格將主要給你想要的效果。

但是,您可能會檢查像this one這樣的線索,以便進一步閱讀已接受的方法來完成此操作。