mysql截取问题?如下图,结果只要小数点加小数点后面的数?怎么写sql

QQ图片20201020125019.png

caryzhangbing 发布于 2020-10-20 12:35 (编辑于 2020-10-20 12:52)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
1
luojian0323Lv7资深互助
发布于2020-10-20 13:39

image.png

最佳回答
0
林克大魔王Lv6中级互助
发布于2020-10-20 12:38(编辑于 2020-10-20 12:41)

1、使用round(1.5551,2)函数 round(要截取的数字,保留多少位)

2、使用format(2.551,"#.##")函数 format(要格式化的数字,"#.##")#.##代表的是保留小数位

  • caryzhangbing caryzhangbing(提问者) 这只能保留小数2位啊?我要的是整数部分不要,保留小数点和小数点后面的数,而后面的数只保留2位啊 例如: 6.6 结果.6 8.888 结果.89
    2020-10-20 12:41 
  • 林克大魔王 林克大魔王 回复 caryzhangbing(提问者) 那可以使用right()函数返回右边的n位数截取,
    2020-10-20 12:45 
  • caryzhangbing caryzhangbing(提问者) 回复 林克大魔王 关键就是小数点右边的位数不固定啊 结果可能是.6 .66 .3 .33 数据不固定啊 如果截取2位的话.6 不会变成.60啊 与我要的结果不符啊
    2020-10-20 12:47 
  • 林克大魔王 林克大魔王 回复 caryzhangbing(提问者) SELECT LENGTH(SUBSTRING_INDEX(1.123456,\'.\',-1)) ,SUBSTRING_INDEX(1.123456,\'.\',-1) 获取到小数点第一次出现的位置,在使用length方法-以上语句的结果 right(leng(leng($$$)-x))
    2020-10-20 12:54 
最佳回答
0
让过去Lv6中级互助
发布于2020-10-20 12:42
先把数据转换成保留两位小数的,再用RIGHT截取后面几位就OK了吧
  • caryzhangbing caryzhangbing(提问者) 直接写sql语句 呢数字随便一个
    2020-10-20 12:44 
  • 让过去 让过去 回复 caryzhangbing(提问者) SELECT RIGHT(FORMAT(\'6.6\',2),3)
    2020-10-20 12:50 
  • caryzhangbing caryzhangbing(提问者) 回复 让过去 运行不出来
    2020-10-20 12:53 
  • 让过去 让过去 回复 caryzhangbing(提问者) 前面那个字符被转义了,SELECT RIGHT(FORMAT(6.6,2),3)
    2020-10-20 12:54 
最佳回答
0
LSQ000Lv5中级互助
发布于2020-10-20 14:01


mysql里面2种写法,一种是截取‘.’后面的数字再拼接上‘.’,一种是从‘.’出现的位置开始截取到最后一位数

select b,CONCAT('.',substring_index(b, '.', -1)) num1,substring(b, LOCATE('.', b)) num2 FROM test;

image.png

最佳回答
0
冷枫逸Lv3见习互助
发布于2020-10-26 11:08

很简单,先定位点的位置,然后用substring截取就行了,定位方法是LOCATE('.', x.xxxxx),完整写下来就是substring(x.xxxxx, LOCATE('.', x.xxxxx))

  • 6关注人数
  • 858浏览人数
  • 最后回答于:2020-10-26 11:08
    请选择关闭问题的原因
    确定 取消
    返回顶部