sql 里怎么用语句裁断小数点后两位
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 里怎么用语句裁断小数点后两位相关的知识,希望对你有一定的参考价值。
bookprice 和bookpricesell 这两个表里面超长了的
你可以改字段属性 number(10,2) 长度10位,小数点后取两位
select substr('123.234',INSTR('123.234','.')+1,2) from dual; 答案是23
不知道满足你的需求没?
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 tableset 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 里怎么用语句裁断小数点后两位的主要内容,如果未能解决你的问题,请参考以下文章