SQL:提取字符串的特定部分

时间:2017-06-13 15:06:50

标签: sql regex oracle substring regexp-like

我试图弄清楚如何使用 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

亲切的问候!

1 个答案:

答案 0 :(得分:0)

您的问题可以直接翻译成regexp_substr()的正则表达式:

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