【问题标题】:Oracle SQL RegexpOracle SQL 正则表达式
【发布时间】:2021-05-22 19:46:02
【问题描述】:

我在两个不同的列中有一个, 分隔字符串值,并且需要匹配这两列之间的特定值。 示例:

Column A: A123,B234,I555,K987
Column B: AAA1,A123,B234,I555,K987

我想检查来自Column A 的值B234(从第6 位开始)和来自Column B(从第11 位开始)的B234,是否匹配。我有几百条这样的记录,需要检查这些值是否匹配。

【问题讨论】:

    标签: sql regex oracle regexp-like


    【解决方案1】:

    按照您的说法,您将比较“单词” - column A 中的第二个与 column B 中的第三个(示例数据在第 1 - 4 行;您可能感兴趣的查询开始于第 5 行):

    SQL> with test (cola, colb) as
      2    (select 'A123,B234,I555,K987', 'AAA1,A123,B234,I555,K987' from dual union all
      3     select 'XYZ'                , 'DEF'                      from dual
      4    )
      5  select *
      6  from test
      7  where regexp_substr(cola, '\w+', 1, 2) = regexp_substr(colb, '\w+', 1, 3);
    
    COLA                COLB
    ------------------- ------------------------
    A123,B234,I555,K987 AAA1,A123,B234,I555,K987
    
    SQL>
    

    【讨论】:

    • 你注意到这篇文章的关闭了吗?对我来说似乎有点不对劲。该参考不包括 Oracle 的方法。我预计关闭的唯一原因是添加了正则表达式标签。
    • 不,我没有,@Scratte。它已经 2 岁了,我认为 SO 没有注意到我们关于封闭式讨论。
    • 不确定您所说的“2 岁”是什么意思。该问题是在大约一周前的“2021-02-19 19:38:09”提出的。但我不能投票重新开放,因为我没有特权。
    • 哈哈哈!哈哈! “2 月 19 日”对我来说是“2019 年 2 月”:) 抱歉,@Scratte。我的错。好的,我为你推了“重新打开”:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-20
    • 2019-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多