Oracle出现小于1的数据丢失小数点前面的0

1.问题起源
oracle 数据库 字段值为小于1的小数时,使用char类型处理,会丢失小数点前面的0
例如0.35就变成了.35
2.解决办法:
(1)用to_char函数格式化数字显示
select to_char(0.338,‘fm9999999990.00’) from dual;
结果:0.34
这里重点要看 fm9999999999.99,表示整数部分最多10位,小数部分2位,fm表示去 掉转位字符串后前面的空格,不加fm,0.34前面会有空格的.
(2)使用decode函数
既然小于1的小数首位必然是’.’,那就判断首位是否为’.’,是则在前面加上’0’即可
SQL> select decode(substr(num,1,1),’.’,‘0’||num,num) from t1_number
DECODE(SUBSTR(NUM,1,1),’.’,‘0’||NUM,NUM)

0.3268
0.57965686
52345234.5686
4.552686
5.292

在之后sqlserver也遇到了

在这里插入图片描述
在这里插入图片描述
可以看到使用的是decimal类型 最终的解决为 使用navicate是看不到这个小数值0但是用其他工具能看到,所以是navicate的设置问题。

--保留两位小 1. 使用 Round() 函 ,如 Round(@num,2) ,其中参 2 表示 保留两位有效 字。 缺点:Round() 只是负责四舍五入到两位小 ,但是不负责去掉后面的0。 print ROUND(13.145, 2); 或者select ROUND(13.145, 2); 结果为:13.150。 2. 使用 Convert(decimal(18,2),@num) 实现转换,其中参 2 表示 保留两位有效 字。 print Convert(decimal(18,2),13.145) 结果为:13.15。 3.使用 cast(@num as decimal(18,2)) 实现转换,其中参 2 表示 保留两位有效 字。 print cast(13.145 as decimal(18,2)) 结果为:13.15。 ---CAST与CONVERT比较 1.CAST与CONVERT相同点: ......... color: #ff0000; <input style="ime-mode:disabled;" onpaste="return false" onkeydown="return check(event)" onkeyup="if(isNaN(this.value)||this.value59) this.value=’0′”> [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 34- 显示 小数点 (51单片机C语言实例Proteus仿真和代码)34- 显示 小数点 (51单片机C语言实例Proteus仿真和代码)34- 显示 小数点 (51单片机C语言实例Proteus仿真和代码)34- 显示 小数点 (51单片机C语言实例Proteus仿真和代码)34- 显示 小数点 (51单片机C语言实例Proteus仿真和代码)34- 显示 小数点 (51单片机C语言实例Proteus仿真和代码)34- 显示 小数点 (51单片机C语言实例Proteus仿真和代码)34- 显示 小数点 (51单片机C语言实例Proteus仿真和代码)34- 显示 小数点 (51单片机C语言实例Proteus仿真和代码)34- 显示 小数点 (51单片机C语言实例Proteus仿真和代码)34- 显示 小数点 (51单片机C语言实例Proteus仿真和代码)34- 显示 小数点 (51单片机C语言实例Proteus仿真和代码)34- 显示 小数点 (51单片机C语言实例Proteus仿真和代码)34- 显示 小数点 (51单片机C语言实例Proteus仿真和代码)34- 显示 小数点 (51单片机C语言实例Proteus仿真和代码)34- 显示 小数点 (51单片机C语言实例P 查询 字字段时,Oracle对于 小于 1的小 小数点 前面 的0是不 显示 的。Oracle中会将 小数点 前的0隐去也会将 小数点 后的0隐去(例如:0.10会变为.1),因此会得不到我们想要的 值格式。解决此类 问题 最简单的办法就是把 值类型转换为字符型,即加上to_char( 值,'fm9990.0099'),例如:to_char(0.10,'fm99990.0099')就会变为0.10而不是.1了。'fm9 问题 :oracle查询 当小 小于 1是,使用to_char类型转换会 丢失 0。例:0.33 变为 .33 仍然用to_char函 数据 进行格式化转换: select to_char(0.567,‘fm9999999990.00’) from dual 最终查询结果为:0.57 注意:这里是四舍五入保留两位小 。fm格式是为去点字符串前的控制。 针对方法1可能会出现整 也会强制转换为带 小数点 数据 不合理。由此 使用 decode解决: select deco http://blog.sina.com.cn/s/blog_7c76d63901017n0e.html 查询 字字段时,Oracle对于 小于 1的小 小数点 前面 的0是不 显示 的。Oracle中会将 小数点 前的0隐去也会将 小数点 后的0隐去(例如:0.10会变为.1),因此会得不到我们想要的 值格式。解决此类 问题 最简单的办法就是把 值类型转换为字符型,即加上to_char( 值,‘fm9990.0099... 2. 问题 解决 为何 小数点 前0会省略,是因为oracle 数据库 中存在一个隐形类型转换,在拼接的过程中小 自动转成字符类型,相当于调用了to_char函 ,所以 丢失 小数点 前面 的0 这里操作就是把 值类型转换为字符型,即加上to_char(字段,’fm9999999999999990.00’) ,(查看表结构... 今天小猿圈给大家分享的是My SQL 使用中4种保留小 的方法,希望可以帮助到大家,让大家的工作更加方便。1 round(x,d) 用于 数据 x的四舍五入, round(x) ,其实就是round(x,0),也就是默认d为0;这里有个值得注意的地方是,d可以是负 ,这时是指定 小数点 左边的d位整 位为0,同时小 位均为0;1 SELECT ROUND(100.3465,2),ROUND(100,2),RO... oracle 数据库 中,小 如果 小于 1,那么查询出来后 前面 的0是不 显示 的。所以不过是 sql 直接取出还是存储过程中取出, 显示 到页面时,都缺少 小数点 前的0. 解决办法: 通过decode函 如select decode(substr(percent,1,1),'.','0'||percent,percent) percent from point;...