如何使用oracle sql获取数字中的前4位数字

时间:2016-03-15 14:44:11

标签: sql oracle

我能做到

select substr(to_char(20041111), 1, 4) FROM dual;

2004

有没有办法不先转换成字符串?

3 个答案:

答案 0 :(得分:4)

您可以使用FLOOR function

select floor(20041111/10000) from dual;

答案 1 :(得分:3)

以下内容未转换为字符串,但我不确定它是否更具可读性......:

select floor(20041111 / power(10, floor(log(10, 20041111) - 3)))
from dual;

log(10,20041111) - > 8.3 ......意思是10 ^ 8.3 ... = 20041111

如果您设置此值,则会获得数字的基数10表示中的位数

如果你想删除数字,你只需要除以10 ^(#digits - 3)(而不是-4,因为10 ^ 1已经有2位数)

答案 2 :(得分:1)

另一种方法是使用REGEXP_REPLACE

SELECT REGEXP_REPLACE(20041111,'....$') FROM dual;