【问题标题】:Select only numeric value仅选择数值
【发布时间】:2019-07-06 21:16:49
【问题描述】:

我有一个如下表结构。

id            version     REQ_REF_ID
 3              1.2            6
 2              1.1            6
 1               1             6

我的查询如下

Select * from XYZ where REQ_REF_ID = 6606 order by version desc FETCH FIRST 2 ROWS ONLY

它给了我最新的 2 行,其中 id 是 3 和 2。

但我只想得到version 数字是整数的那两行,没有十进制值。

在这种情况下,我想获取 id 为 1 的行。

【问题讨论】:

    标签: sql oracle integer


    【解决方案1】:

    您可以检查ROUND 函数以获取整数值

    and ROUND(version) = version
    

    ROUND 返回 n 舍入到小数点右侧的整数位。

    【讨论】:

    • @Patel 你用round(1.0)测试了吗?
    • @MarmiteBomber 1.0 是一个整数,因此round(1.0) = 1.0
    • @user7294900 使用以下数据进行简单测试1.0, 1.0, 1round 无法区分它们,因此您会得到一些随机结果。
    【解决方案2】:

    您也可以使用TRANSLATE

     where translate(VERSION, '?1234567890', '?') is null
    

    【讨论】:

      【解决方案3】:

      你可以点赞

      and (version)%1 = 0
      

      % by 1 会给你小数部分(如果有的话)

      【讨论】:

        猜你喜欢
        • 2012-09-21
        • 1970-01-01
        • 1970-01-01
        • 2015-01-16
        • 2014-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多