Oracle SQL:使用char表示数字的千分之一

Pet*_*ter 1 sql oracle character

我是Oracle SQL的新手,我遇到了这个小问题.有没有办法用一个'*'字符表示每个千分之一的数字?假设我有一个数字5000,输出将看起来像'****',1250'*',560'',2200'**'等.我正在调查TO_CHAR()函数,但我找不到任何可用的东西.谢谢你的回答.

Syl*_*oux 6

试试看:

SELECT RPAD(' ',1+TRUNC(my_number/1000),'*') FROM DUAL;
Run Code Online (Sandbox Code Playgroud)
  • RPAD将添加尽可能多*的字符串以具有所需的长度.
  • 请注意字符串' '.它确实包含一个空间(因此1+TRUNC(...)).这是必需的,因为Oracle将空字符串视为NULL.并且NULL作为第一个参数传递RPAD将返回NULL而无需进一步处理.
  • 推论前一点,你的结果将有一个领先的空间.你可以删除它,SUBSTR(... ,2) 但是当Oracle将空字符串视为处理时NULL,这将产生NULL低于1000的值的结果.

作为替代解决方案,如果您的值具有不高的上限,则可能基于SUBSTR值得考虑的解决方案:

SELECT my_number, SUBSTR('*****', 0, TRUNC(my_number/1000)) FROM my_table;
Run Code Online (Sandbox Code Playgroud)