2013-03-13 67 views
0

我与这些值的表列:在许多列拆分单词的sql

Column-desc 
------------------ 
"car broken" 
"motorcycle broken" 
"motorcycle clean" 
"motorcycle clean and broken" 
------------------ 

,我需要做一个选择,返回此:

return-desc1 | return-desc2 | return-desc3 |return-desc4 
------------------------------------------------------ 
car   | broken  |    | 
motorcycle | broken  |    | 
motorcycle | clean  |    | 
motorcycle | clean  | and   | broken 
------------------------------------------------------- 

(是的,最多会返回4 DESC)。 我可以在这种情况下使用正则表达式吗?

如果这可以帮助:我使用Oracle 10g

+1

这可能让你在正确的方向前进:http://stackoverflow.com/questions/5123585/how-to-split-a-single-column-values-to-multiple-column-values – 2013-03-13 13:50:05

+0

很酷,它会帮助我,我可以一步一步来。 – rcorbellini 2013-03-13 13:51:22

+0

它不工作在oracle = [ – rcorbellini 2013-03-13 13:55:21

回答

3
select 
    regexp_substr("Column-desc", '\S+', 1, 1) as "return-desc1", 
    regexp_substr("Column-desc", '\S+', 1, 2) as "return-desc2", 
    regexp_substr("Column-desc", '\S+', 1, 3) as "return-desc3", 
    regexp_substr("Column-desc", '\S+', 1, 4) as "return-desc4" 
from your_table 
+0

完美这是一个完美的答案! – rcorbellini 2013-03-13 13:58:06

0

老实说,我的建议是让列递减,做编程层分割工作。这样做会更容易,可能更适合。