Itzik Ben-Gan在他的書'InsideMicrosoft®SQLServer®2008:T-SQL'中解釋了Appoach A是如何工作的,因爲SQL Server的未公開行爲在其中執行從SELECT
。Group String Concatenation:哪種方法更有保證?
備受推崇collegue和DB大師建議,B方法被保證工作。他的論點是基於COALESCE
與CAST
的「價值擴張」方法的遞歸性質。
實際上,我不知道「值擴展」是指什麼(除了它將一個值賦值給另一個值)或它如何應用於這個問題?也許他誤解了?是的,在某種意義上,COALESCE
是遞歸的,但據我所知,它是無關緊要的,並且由於多個賦值的未記錄行爲而產生期望的結果。
他是否正確?請不要「使用FOR XML PATH
」代替「答案!
解決方法A
DECLARE @output VARCHAR(100);
SET @output = '';
SELECT @output = @output + CAST(COL_VCHAR AS VARCHAR(10)) + ';'
FROM someTable;
B方法
DECLARE @output VARCHAR(100);
SELECT @output = COALESCE(@output + ', ', '') + COL_VCHAR
from someTable;
你試過了嗎? – 2012-02-16 18:49:41
@Adrian他們都工作。如果他們工作,問題不是這樣,但如果我說他們都是因爲相同的無證行爲而工作,那麼他們是正確的? – 2012-02-16 18:57:21