我正在试着看看我是否可以改进下面的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发布于 2015-03-25 01:32:50
在T-SQL中使用replicate(),在MySQL中使用repeat()
select replicate('9', have_int)发布于 2015-03-25 01:48:33
您可以以一种独立于数据库的方式使用substring():
select substring('999999999999', 1, have)注意:有些数据库将substring()拼写为substr()。您也可以使用left()来实现此目的。或者,正如另一个答案所建议的那样,其中一个内置函数确实因数据库而不同。
https://stackoverflow.com/questions/29239183
复制相似问题