使用RegExp从Oracle中的SELECT中提取前2个单词(3个包括破折号)?

时间:2017-11-27 12:19:42

标签: sql oracle oracle11g

我的列中包含多个值,格式为:

[word] - [word] - [word] - [word]


所以它看起来像:

GEO - MRVES - EKBASDSS - MO

如何编写将提取第一部分的查询  所以从上面的例子我想要“GEO - MRVES”。每个值都没有设定长度。

2 个答案:

答案 0 :(得分:1)

您可以使用regexp_substr()

select regexp_substr(col, '[^-]+-[^-]+', 1, 1)

答案 1 :(得分:1)

使用SUBSTRINSTR

的另一种方式
SELECT SUBSTR(t.column_one, 1, INSTR(t.column_one, '-', 1, 2) -1) AS col_one
FROM your_table t;

使用INSTR查找-的第二次出现,并从字符串的开头切换到该位置 - 1