【问题标题】:How to take first and second part of custom symbol in the words如何在单词中获取自定义符号的第一部分和第二部分
【发布时间】:2021-03-18 16:27:26
【问题描述】:

我想在 oracle 列中分隔一个具有“MAT CHAMPAIGN - SOUTH---->MAT EP - KK”的单词

我尝试了下面的代码来获取

select regexp_substr('MAT CHAMPAIGN - SOUTH---->MAT EP - KK','([^,--->]+)',1,1) from dual : 输出是 MAT CHAMPAIGN

select regexp_substr('MAT CHAMPAIGN - SOUTH---->MAT EP - KK','([^,--->]+)',1,2) from dual : 输出为 SOUTH

实际上,我正在尝试将 MAT CHAMPAIGN - SOUTH 放在一个列中,并将 MAT EP - KK 作为基于符号的第二列 --->

请帮忙

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    您可以尝试将REGEXP_SUBSTR 与捕获组一起使用:

    SELECT
        REGEXP_SUBSTR(col, '(.*)---->', 1, 1, NULL, 1) AS first,
        REGEXP_SUBSTR(col, '---->(.*)', 1, 1, NULL, 1) AS second
    FROM yourTable;
    

    这里我们使用正则表达式来匹配和捕获----> 分隔符之前或之后的所有内容。

    【讨论】:

      【解决方案2】:
      select 
        regexp_substr('MAT CHAMPAIGN - SOUTH---->MAT EP - KK','^(.+?)---->',1,1, '', 1)col1
      , regexp_substr('MAT CHAMPAIGN - SOUTH---->MAT EP - KK','---->(.+?)$',1,1, '', 1)col2 
      from dual ;
      

      【讨论】:

      • 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常更有帮助,质量更高,更有可能吸引投票。
      猜你喜欢
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      • 2016-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多