2011-05-28 112 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