首页 > 数据库 >【Oracle】Oracle SQL查询数字是否为小数点后两位

【Oracle】Oracle SQL查询数字是否为小数点后两位

时间:2024-05-16 14:31:32浏览次数:22  
标签:instr 小数点 dual SQL Oracle 12.1235 select

【Oracle】Oracle SQL查询数字是否为小数点后两位

因为业务要求,需要对系统中的属性值进行更新,如果数据为小数点后三位及以上,则需要将对应的单位进行变更,并将数据同步翻倍

例如 0.001KG,要换成 1G

我们知道instr可以找某个字符的位置,同样的,我们可以通过instr查找小数点的位置

image

同时,可以使用length来确定这个数值的位数

image

那么就可以发现,通过相减,就可以得到小数点后的位数了

select LENGTH(12.1235) - instr(12.1235 , '.') from dual

image

那么要找到小数点后三位及以上,就可以用减去的结果大于2来判断

select count(1) from dual where (length(12.1235) - instr(12.1235 , '.')) > 2

有返回行就说明是符合的,没有返回就说明是不符合的

image

但是这种会有个问题,我们知道instr在没查到的时候会返回0,那么如果不存在小数点的大于两位数的话,同样会符合

因此要再加一个条件instr(12.1235,'.') > 0来确保这个是存在小数点的

最后即

select count(1) from dual where (length(12.1235) - instr(12.1235 , '.')) > 2 and instr(12.1235,'.') > 0

以上

标签:instr,小数点,dual,SQL,Oracle,12.1235,select
From: https://www.cnblogs.com/jokingremarks/p/18195889

相关文章

  • mysql存储过程中如何使用游标中的值进行查询
    在MySQL中,游标(Cursor)是一种用于从结果集中逐行访问数据的数据库对象。在存储过程(StoredProcedure)中,你可以使用游标遍历查询结果,并对每一行数据进行处理。下面是一个简单的示例,说明如何在MySQL存储过程中使用游标中的值进行查询:创建示例表首先,我们创建一个简单的示例表,用于演......
  • openGauss 执行-SQL-语句时-提示-Lock-wait-timeout
    执行SQL语句时,提示Lockwaittimeout问题现象执行SQL语句时,提示"Lockwaittimeout"。ERROR:Lockwaittimeout:thread140533638080272waitingforShareLockonrelation16409ofdatabase13218after1200000.122msERROR:Lockwaittimeout:thread1405336380......
  • SQL 学习笔记
    1,编写一条SQL语句,从 product(商品)表中选取出“登记日期(regist_date)在2009年4月28日之后”的商品,查询结果要包含 productname 和 regist_date 两列。SQL脚本:selectproduct_name,regist_datefromproductwhereregist_date>='2009-04-28' 2,NULL值不等于任何值,......
  • mysql命令行增删改查
    新增数据库shop:createdatabaseshop;查看数据库:showdatabases;查看创建数据库的命令:showcreatedatabaseshop;进入数据库: useshop;查看数据表: showtables;创建数据表name:   createtablename(idint,bsvarchar(50));进入数据表:descname可以查看创建表的命......
  • 聊聊MySQL是如何处理排序的
    本文分享自华为云社区《MySQL怎样处理排序⭐️如何优化需要排序的查询?》,作者:菜菜的后端私房菜。前言在MySQL的查询中常常会用到 orderby 和 groupby 这两个关键字它们的相同点是都会对字段进行排序,那查询语句中的排序是如何实现的呢?当使用的查询语句需要进行排序时有两种......
  • 配置MySQL主从复制和读写分离
    实验环境序号主机名IP地址备注1mysql-master192.168.204.201MySQL主库2mysql-slave192.168.204.202MySQL从库3appserver192.168.204.111应用服务器安装配置MySQL数据库1.使用yum安装mysql和mysql-serveryuminstall-ymariadbmariadb-server2.启......
  • Oracle update语句引起大量业务卡顿
    记一次update语句引起大量业务卡顿分析处理过程,聊聊我的思路。技术人人都可以磨炼,但处理问题的思路和角度各有不同,希望这篇文章可以抛砖引玉。以一个例子为切入点一、问题背景某业务模块反馈最近出现过几次业务卡顿,数据库中定位到有几个insertinto语句的gc等待比较严重,虽然......
  • gorm实现MySQL的INSERT INTO ... ON DUPLICATE KEY UPDATE差异化插入和更新
    比如插入f_create_uid,更新时忽略f_create_uid,只更新f_update_uid。可使用gorm的BeforeCreate和BeforeUpdate钩子,这两个钩子分别在创建和更新记录之前被调用。//BeforeCreate在创建记录之前调用func(dob*MyStruct)BeforeCreate(tx*gorm.DB)(errerror){dob......
  • mysql中explain命令详解
    前言我们可以使用explain命令来查看SQL语句的执行计划,从而帮助我们优化慢查询。使用注意:使用的mysql版本为8.0.28数据准备CREATETABLE`tb_product2`(`id`bigintNOTNULLAUTO_INCREMENTCOMMENT'商品ID',`name`varchar(20)DEFAULTNULLCOMMENT'商品......
  • Linux Debian12 部署MySql 并建立外部连接
    一.下载MySql下载最新软件包。也可以在命令界面下使用下载最新的发行包。wgethttps://repo.mysql.com/mysql-apt-config_0.8.29-1_all.deb下载完成后,使用命令进行安装dpkg-imysql-apt-config_0.8.29-1_all.deb执行完后会跳转到安装MySql配置界面​TAB进行保存,选中OK,然......