sql 里怎么用语句裁断小数点后两位

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 里怎么用语句裁断小数点后两位相关的知识,希望对你有一定的参考价值。

bookprice 和bookpricesell 这两个表里面超长了的

    你可以改字段属性 number(10,2) 长度10位,小数点后取两位

    select substr('123.234',INSTR('123.234','.')+1,2) from dual;  答案是23

    不知道满足你的需求没?

参考技术A 把数字乘100取整再除100,就可以啦。 参考技术B sqlserver的话
select cast(bookprice as decimal(18,2))
from 表
这样不就可以了追问

我要把裁断更新到数据库里面去。。。

追答

没明白,,,你这不是查询出来就是39.7999999这样吗,,,
你想怎么样,,,
如果是更新
update 表 set bookprice=cast(bookprice as decimal(18,2))
不是一样的吗

追问

不知道怎么的update了还是变回来了,在数据库里面没有变一样

追答

,,,怎么可能,,如果是单纯的表更新这种肯定没问题的,,,你说又变回去的可能

    表里面有触发器

    库里面有更新的函数或过程

    create table test(id money)

    insert into test(id)

    select 1.3333333333333333

    update test set id=cast(id as decimal(18,2))

    你这样测试下酒知道了,肯定没问题的

本回答被提问者采纳

sql语句中怎么把字符串两位两位的反转

如下图片:我想把“16jz”这列数反转。也就是88CF55A0变成A055CF88 然后写到“16进制倒置”的列里,再把“16进制倒置”这列的数转成10进制写入“十进制里”列

update table

set 16进制倒置=right(16jz,2)+SUBSTRING(16jz,5,2)+SUBSTRING(16jz,3,2)+left(16jz,2);
第二个需求也类似这样操作,但需要写一个自定义函数,你百度一下吧,有这方面的函数,只是代码有点多,在这里就不贴上来了
参考技术A 我觉得你应该先把16进制转10进制,再用REVERSE函数反转10进制数,再把得到的这个10进制数转16进制,10进制转16进制可以用cast(10进制数as varbinary(255)) 参考技术B update 表 set 16进制倒置 = REVERSE(16jz), 十进制 = REVERSE(16进制数)
from 表

试试,倒置应该没问题。UPDATE那块我没试。

以上是关于sql 里怎么用语句裁断小数点后两位的主要内容,如果未能解决你的问题,请参考以下文章

sql语句 怎么去掉小数点后多余的 0

如何让SQL不显示小数点后的0

sql查询结果保留两位小数,如何做?

sql 中要求现实数据保留两位小数 搜索语句

如何用sql语句将计算结果保留两位小数

oracle:求百分比,保留小数点后两位,不会出现.01的情况,也不会出现#######的情况,写一条sql语句