2011-05-28 157 views
0

我有一個sql列,它由四個以斜線(「/」)分隔的連接詞組成。單詞可以是任意長度可變的任意單詞。我如何分別檢索每個單詞。我需要寫什麼查詢?sql列值拆分

謝謝

+1

第一:壞桌子設計!第二:看到[這個答案](http://stackoverflow.com/questions/5829543/how-to-parse-a-string-and-create-several-columns-from-it/5829640#5829640)得到的想法,只需用''/'替換''_'' – 2011-05-28 12:08:47

+0

這隻有在只有一個斜線時纔有用,但我有三個斜線。 – RAHUL 2011-05-28 12:12:50

+0

來吧!比你必須做三次與一些額外的'SUBSTRING'魔術 – 2011-05-28 12:14:23

回答

0

不是「最快的方式」,但它會工作。

with extract1 as 
(
    SELECT substring(data, 1, charindex('/', data)-1) AS data1, 
    substring(data, charindex('/', data)+1, LEN(data)) AS data 
    from atable 
), extract2 
(
    SELECT data1,substring(data, 1, charindex('/', data)-1) AS data2, 
    substring(data, charindex('/', data)+1, LEN(data)) AS data 
    from extract1 
) 
    SELECT data1,data2,substring(data, 1, charindex('/', data)-1) AS data3, 
    substring(data, charindex('/', data)+1, LEN(data)) AS data4 
    from extract2