[英]sql case expression for repeating values based on number of occurrences in oracle
我正在尝试查看是否可以改进下面的case语句或找到更好的方法。 根据HAVE的值,输出(WANT)始终是9的序列。
Have Want
1 9
2 99
3 999
4 9999
5 99999
6 999999
7 9999999
Case Have when '1' then '9'
when '2' then '99'
when '3' then '999'
when '4' then '9999'
when '5' then '99999'
--it keeps going on and on-- for instance a 6 will have 6 9's , a 7 will have 7 9's, a 9 will have 9 9's--
end as Want
我将赞赏一种更好的方式来处理此任务。 数据库在oracle中
注意:我终于找到了一种使其工作的方法。 我以为我和团队分享
select RPAD('9',LENGTH('9')*(HAVE),'9') from dual
在T-SQL中使用replicate()
,在MySQL中使用repeat()
select replicate('9', have_int)
您可以通过一种与数据库无关的方式使用substring()
:
select substring('999999999999', 1, have)
注意:某些数据库将substring()
拼写为substr()
。 您也可以为此使用left()
。 或者,正如另一个答案所暗示的那样,实际上确实有一个内置函数因数据库而有所不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.