我想通过使用oracle查询显示下面给出的数字:
1000000 1M
22000 22k
请帮忙有没有办法在oracle查询中做到这一点?
答案 0 :(得分:8)
我认为没有标准功能(科学记谱法除外),但您可以自己定义这样的功能:
SQL> WITH DATA AS (SELECT power(10, ROWNUM) num FROM dual CONNECT BY LEVEL <= 9)
2 SELECT num,
3 CASE
4 WHEN num >= 1e6 THEN
5 round(num / 1e6) || 'M'
6 WHEN num >= 1e3 THEN
7 round(num / 1e3) || 'k'
8 ELSE to_char(num)
9 END conv
10 FROM DATA;
NUM CONV
---------- -----------------------------------------
10 10
100 100
1000 1k
10000 10k
100000 100k
1000000 1M
10000000 10M
100000000 100M
1000000000 1000M