xiao白跳大神 2022-01-07 21:34 采纳率: 80%
浏览 15

postgrep要求数字最后一位补0怎么处理

问题遇到的现象和发生背景

前台用户会传一个参数,代表这个数值他要多少位,数据库一个字段的一个值是12345 ,然后前台比传4,那么数据库需要用sql查出来是12344位,如果同样的数字用户传6,那么查出来应该要是123456.0 请问这个sql咋写

  • 写回答

1条回答 默认 最新

  • DarkAthena ORACLE应用及数据库设计方案咨询师 2022-01-08 17:04
    关注

    乍一看以为是精度问题,但细看,这不对呀,这问题描述是不是有问题?
    123456.0这不是7位了么?而且你12345是咋变成的123456.0呀?这个转换规则到底是怎样的?


    其实吧,对于数字而言,小数点后面末尾的0没有任何意义,你现在要求的是显示成你想要的格式,那么这个时候,它其实是按照你要求显示的字符串了,应该用to_char去格式化它

      select to_char(123456,'fm999999999999990.0000000000');
    

    img

    像这个sql,小数点后面接多少个0,它就会保留小数点后多少位进行显示。
    但你这个需求明显有问题,如果数据库里存个1,然后用户传个10,你难道给他显示1.000000000?这有什么意义?而且你问题里,数据库存12345,传4,显示1234,这数字大小都变了啊,这不是个错的么?

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 1月7日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵