繁体   English   中英

sql case表达式,用于基于oracle中的出现次数重复值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM