【问题标题】:substr in Oracle from column从列中的 Oracle 中的 substr
【发布时间】:2019-01-13 07:44:49
【问题描述】:

Oracle 中 substr 减去字符串的语法是什么 我有“123456789 #073” 我只想要#之后的内容

substr (table.col, 17,3) 那样可以么 ?

【问题讨论】:

    标签: sql oracle substr


    【解决方案1】:

    最简单(也是最高效)的方法是使用基本字符串函数:

    SELECT SUBSTR(col, INSTR(col, '#') + 1)
    FROM yourTable;
    

    Demo

    我们也可以在这里尝试使用REGEXP_REPLACE

    SELECT REGEXP_REPLACE(col, '.*#(.*)', '\1')
    FROM yourTable;
    

    regex 选项通常不会像第一个查询那样执行。这样做的原因是调用正则表达式会产生性能开销。如果您预计字符串逻辑将来可能会更改或变得更加复杂,您可能需要考虑使用正则表达式选项。否则,尽可能使用基本字符串函数。

    【讨论】:

      【解决方案2】:

      我觉得最直接的方法可能是regexp_substr():

      select regexp_substr('123456789 #073', '[^#]+$')
      from dual;
      

      正则表达式说:“让我得到字符串末尾的所有非散列字符”。

      如果你碰巧知道有 3 个字符并且真的想要字符串的最后三个字符:

      select substr('123456789 #073', -3)
      

      【讨论】:

        猜你喜欢
        • 2023-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-17
        • 1970-01-01
        • 1970-01-01
        • 2013-04-03
        相关资源
        最近更新 更多