有没有任何功能喜欢&#; Lpad | RPAD'但支持正则表达式?在Oracle中

时间:2014-04-25 02:19:46

标签: regex oracle

我有一个名为date_list的列,它的值如下:

2014-04-11,2014-04-11,2014-04-14,2014-04-17
2014-04-13,2014-04-15,2014-04-17

你可以看到一个有四个元素,另一个有三个,但现在我想保留五个元素。我需要concat',Nil',如果它的元素小于5。 所以我期望的结果是:

2014-04-11,2014-04-11,2014-04-14,2014-04-17,Nil
2014-04-13,2014-04-15,2014-04-17,Nil,Nil

这是我的方法,但不确定元素的数量: decode(REGEXP_COUNT(date_list,','),2,date_list||',Nil,Nil',3,date_list||',Nil',date_list)

任何建议都表示赞赏。

2 个答案:

答案 0 :(得分:1)

试试这个

SELECT 
decode(
REGEXP_COUNT (cadena,',',1,'i'),
1,cadena || ',nil,nil,nil',
2,cadena || ',nil,nil',
3,cadena || ',nil',
cadena) resultado  FROM demo2;

答案 1 :(得分:1)

尝试:

replace( rpad( date_list,length(date_list) + 4-REGEXP_COUNT(date_list,','), '@' ), 
         '@', ',nil' )

演示:http://sqlfiddle.com/#!4/a24ca