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

时间:2015-03-24 17:29:11

标签: sql

我试图看看我是否可以改进下面的案例陈述或找到更好的方法。根据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

2 个答案:

答案 0 :(得分:2)

在T-SQL中使用replicate(),在MySQL中使用repeat()

select replicate('9', have_int)

答案 1 :(得分:1)

您可以以某种独立于数据库的方式使用substring()

select substring('999999999999', 1, have)

注意:某些数据库将substring()拼写为substr()。您也可以使用left()来实现此目的。或者,正如另一个答案所暗示的那样,其中一个内置函数确实因数据库而异。