我有一個簡單的字符串列表,它可以是任意長度的。我希望能夠使用這個字符串列表,因爲我會使用行集。有問題的應用程序針對SQL Server運行。如何將任意字符串列表轉換爲SQL行集?
爲了更清楚,如果我做SELECT 'foo', 'bar', 'baz'
我在單行中獲得'foo','bar'和'baz'作爲字段。我希望將它們中的每一個看作是一個單獨的行。
是否存在我缺少的SQL(或特定於SQLServer)函數或技術,或者我將不得不求助於使用外部腳本語言編寫函數?
我有一個簡單的字符串列表,它可以是任意長度的。我希望能夠使用這個字符串列表,因爲我會使用行集。有問題的應用程序針對SQL Server運行。如何將任意字符串列表轉換爲SQL行集?
爲了更清楚,如果我做SELECT 'foo', 'bar', 'baz'
我在單行中獲得'foo','bar'和'baz'作爲字段。我希望將它們中的每一個看作是一個單獨的行。
是否存在我缺少的SQL(或特定於SQLServer)函數或技術,或者我將不得不求助於使用外部腳本語言編寫函數?
我可能會錯過這一點....但;
SELECT 'foo'
UNION
SELECT 'bar'
UNION
SELECT 'baz'
那麼,作爲一個「技術」有
SELECT 'foo'
UNION ALL
SELECT 'bar'
UNION ALL
SELECT 'baz'
(在ALL
s爲以覆蓋你的一些字符串都相同的情況下 - UNION
沒有ALL
將刪除重複);但不知道更多關於你的情況,很難說這是否是你需要的...
用於包裝語義的+1! – 2010-04-12 15:26:35
如果它將是一個任意長度,你可以使用一個PIVOT。我以前只做了幾次,但它會做你所問的。
http://msdn.microsoft.com/en-us/library/ms177410.aspx
這也許不是最好的例子,但應該可以幫助你開始。
我認爲UNPIVOT實際上可以更好地爲此工作,但這些示例顯示它並不完全符合我的要求。不過謝謝,這可能是我需要的東西。 – 2010-04-12 15:41:27
更可重複使用的解決方案是創建一個表值函數,如記錄here.
這是我所需要的 - 謝謝! – 2010-04-12 15:41:44