【问题标题】:using Substr and instr in SQL在 SQL 中使用 Substr 和 instr
【发布时间】:2016-09-09 06:55:45
【问题描述】:

我正在尝试从记录中提取字符串的中间部分。我想得到字符串的唯一中间部分。

select instr('WUK00000105376:WUKE03960761:WUKR0093868603',':') 
from dual;

我只想从此字符串中获取WUKE03960761

我尝试过使用 sustring 和 instring 来获取输出,但没有得到。

【问题讨论】:

    标签: sql oracle


    【解决方案1】:
    SELECT SUBSTR(col,
                  INSTR(col, ':') + 1,
                  INSTR(col, ':', 1, 2) - INSTR(col, ':') - 1)
    FROM dual
    

    【讨论】:

      【解决方案2】:

      另一种选择是使用regexp_substring() 来获取两个冒号之间的字符串:

      select regexp_substr('WUK00000105376:WUKE03960761:WUKR0093868603',':[A-Z0-9]+:') 
      from dual;
      

      不过,这也会返回冒号,但您也可以告诉 regexp_substr() 从正则表达式返回特定组:

      select regexp_substr('WUK00000105376:WUKE03960761:WUKR0093868603',':([A-Z0-9]+):',1,1,'i',1) 
      from dual;
      

      但是 Tim 使用 substr 和 instr 的解决方案很可能会快很多。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-17
        • 2018-09-25
        • 1970-01-01
        • 2014-12-07
        相关资源
        最近更新 更多