我试图看看我是否可以改进下面的案例陈述或找到更好的方法。根据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
答案 0 :(得分:2)
在T-SQL中使用replicate()
,在MySQL中使用repeat()
select replicate('9', have_int)
答案 1 :(得分:1)
您可以以某种独立于数据库的方式使用substring()
:
select substring('999999999999', 1, have)
注意:某些数据库将substring()
拼写为substr()
。您也可以使用left()
来实现此目的。或者,正如另一个答案所暗示的那样,其中一个内置函数确实因数据库而异。