【问题标题】:SQL: Extract specific part of stringSQL:提取字符串的特定部分
【发布时间】:2017-11-15 10:55:41
【问题描述】:

我试图弄清楚如何使用 Oracle SQL 中的 select 语句提取字符串的特定部分(由多个术语组成)。

列中的值有点像'2E WK 12-345-678 TM 13-06-2017',每行的格式略有不同。

现在我想创建一个新列,该列仅显示每行中的 '123-456-789' 部分。现在的问题是:如何从每一行中识别 3 个数字、连字符、3 个数字、连字符、3 个数字的这种确切格式?

SUBSTR(...) 没有为我做这件事,因为有问题的部分并不总是在同一个位置。然后我尝试应用 REGEXP_LIKE(...) 但这也不会返回正确的值。

我应该如何编写 SQL 语句来做到这一点?非常感谢您的帮助。

字符串示例:

2E XX **18-580-0111**
**18-990-0020**: 11.2.11-11.14.19
**65-660-0838** 2015 xxxx core sysxx
**78-140-401** t/m 0019

** = specific part of the string that's needed

亲切的问候!

【问题讨论】:

  • 看看REGEXP_SUBSTR()

标签: sql regex oracle substring regexp-like


【解决方案1】:

你的问题可以直接翻译成正则表达式,为regexp_substr()

select col, regexp_substr(col, '[0-9]{2}-[0-9]{3}-[0-9]{3}')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-22
    • 2017-07-08
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    • 2015-12-29
    相关资源
    最近更新 更多