oracle返回多行常量串(寫死)的值

有個兄弟非要在sql中返回月份01,02....

我想到下面2個辦法

1.使用union

select '01' from dual union

select '02' from dual union

......

2.使用regexp_substr函數

select regexp_substr('01,02,03,04,05,06,07,08,09,10,11,12','[^,]+',1,rownum) from dual  connect by rownum<=12

標準的格式應該是
select regexp_substr('01,02,03,04,05,06,07,08,09,10,11,12','[^,]+',1,rownum) from dual
connect by rownum<=length('01,02,03,04,05,06,07,08,09,10,11,12')-length(replace('01,02,03,04,05,06,07,08,09,10,11,12',','))+1

但是把長度計算一下就沒有必要寫那麼長了。

比如 select regexp_substr('紅色,白色,黑','[^,]+',1,rownum) from dual connect by rownum<=3

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章