2010-04-12 50 views
1

我有一個簡單的字符串列表,它可以是任意長度的。我希望能夠使用這個字符串列表,因爲我會使用行集。有問題的應用程序針對SQL Server運行。如何將任意字符串列表轉換爲SQL行集?

爲了更清楚,如果我做SELECT 'foo', 'bar', 'baz'我在單行中獲得'foo','bar'和'baz'作爲字段。我希望將它們中的每一個看作是一個單獨的行。

是否存在我缺少的SQL(或特定於SQLServer)函數或技術,或者我將不得不求助於使用外部腳本語言編寫函數?

回答

3

我可能會錯過這一點....但;

SELECT 'foo' 
UNION 
SELECT 'bar' 
UNION 
SELECT 'baz' 
+0

這是我所需要的 - 謝謝! – 2010-04-12 15:41:44

5

那麼,作爲一個「技術」有

SELECT 'foo' 
UNION ALL 
SELECT 'bar' 
UNION ALL 
SELECT 'baz' 

(在ALL s爲以覆蓋你的一些字符串都相同的情況下 - UNION沒有ALL將刪除重複);但不知道更多關於你的情況,很難說這是否是你需要的...

+0

用於包裝語義的+1! – 2010-04-12 15:26:35

1

如果它將是一個任意長度,你可以使用一個PIVOT。我以前只做了幾次,但它會做你所問的。

http://msdn.microsoft.com/en-us/library/ms177410.aspx

這也許不是最好的例子,但應該可以幫助你開始。

+0

我認爲UNPIVOT實際上可以更好地爲此工作,但這些示例顯示它並不完全符合我的要求。不過謝謝,這可能是我需要的東西。 – 2010-04-12 15:41:27

1

更可重複使用的解決方案是創建一個表值函數,如記錄here.