2014-09-04 59 views
0

我有一個表下方SQL查詢來創建單排多行

ID   Value 
-----  ---------- 
1   10,20,30 

給出我需要的結果作爲

ID   Value 
---  ------- 
1   10 
1   20 
1   30 

感謝。

+2

你爲什麼要在所有存儲'10,20,30'?難道不可能按照你想要的結果存儲它嗎?所以你應該用第一個表的外鍵創建一個新表。該過程稱爲[規範化](http://en.wikipedia.org/wiki/Database_normalization)。 – 2014-09-04 13:10:40

+0

我知道你可能會認爲你正在以你存儲它們的方式賺取空間,但你將失去顯示它們的處理時間。我同意@Tim,有單獨的行。甚至還有另一張表格,用於一對多或多對多關係。這就是爲什麼我們有關係數據庫。 – 2014-09-04 13:14:08

+0

是否有可能通過使用sql查詢得到結果? – Merin 2014-09-04 13:16:08

回答

0

請嘗試以下方法:

SELECT A.ID, 
     Split.a.value('.', 'VARCHAR(100)') AS Value 
    FROM (SELECT ID, 
       CAST ('<V>' + REPLACE(Value, ',', '</V><V>') + '</V>' AS XML) AS Value 
     FROM YourTable 
     ) AS A 
     CROSS APPLY Value.nodes ('/V') AS Split(a);