【问题标题】:How to fetch only decimal number from a string using regex in oracle如何在oracle中使用正则表达式从字符串中仅获取十进制数
【发布时间】:2019-12-30 17:50:55
【问题描述】:

我有一个包含字母数字字符的字符串。如果字符串有十进制值,那么我只想从字符串中获取十进制值,否则返回空白。

我尝试了同时给出数字和小数的正则表达式 REGEXP_SUBSTR(string_value, '[0-9][.0-9]+')

请在下面找到示例数据。

示例 1:我的字符串是“182 test 123423”。在这个没有十进制值那么我需要返回空白

示例 2:我的字符串是“Test01.1%Ter 230334”,输出应该是 01.1

示例 3:我的字符串是“14.05 get fvfdf 2434 Rf”,输出应该是 14.05

请建议我哪里做错了。

【问题讨论】:

    标签: oracle11g


    【解决方案1】:

    您当前的尝试几乎是正确的,但正则表达式模式略有偏差。试试这个版本:

    SELECT
        REGEXP_SUBSTR(string_value, '[0-9]+\.[0-9]+')
    FROM yourTable;
    

    Demo

    下面是正则表达式模式的解释:

    [0-9]+   match one or more digits
    \.       followed by a literal decimal point (which should be escaped)
    [0-9]+   followed by one or more digits
    

    【讨论】:

      猜你喜欢
      • 2021-09-19
      • 2014-04-24
      • 2020-08-15
      • 2018-11-01
      • 1970-01-01
      • 2017-09-19
      • 1970-01-01
      • 2014-06-02
      • 1970-01-01
      相关资源
      最近更新 更多