问题背景:有一批数据,小数点后的位数参差不齐,我想处理小数点后位数大于4的数据,那么第一步:怎么把这些数据查出来?
1.数据库:mysql
2.数据格式:varchar (如果存的是数字,可以把数字用cast函数转成varchar)
3.原始数据图如下:

4.思路:
(1)用REVERSE(str)函数反转字符串;
(2)用INSTR(STR,SUBSTR) 函数查找小数点“.”出现的位置。——注:INSTR(STR,SUBSTR) 在一个字符串(STR)中搜索指定的字符(SUBSTR),返回发现指定的字符的位置(INDEX);
(3)用第(2)步查出的数-1即小数点后数据的位数,或者说长度
5.效果如图:

6.sql
select
price as '原始数据',
REVERSE(price) as '反转后的原始数据' ,
INSTR(REVERSE(price),'.') as '小数点的位置',
INSTR(REVERSE(price),'.')-1 as '小数点后的位数'
from table
where (INSTR(REVERSE(price),'.')-1)>5 ;
-- price是要处理的字段名,table 是表名
本文介绍如何使用MySQL查询小数点后位数超过5位的数据。通过反转字符串并定位小数点来计算小数部分的长度。

3353

被折叠的 条评论
为什么被折叠?



