Oracle从表中选择特定字符串以及后续字符

时间:2017-06-28 19:53:54

标签: sql database oracle

我想从表中选择包含特定字符串的所有行,但之后还返回以下通常是动态的4个字符。

所以基本上我有一个看起来像这样的表

Column1 | Column2

CSE-001 | jdaosfjodas

CSE-002 | fjdaosfjdosj

GDS-001 | dskfjaodij

CSE-103 | fojdsiofj

现在,我想选择以CSE开头的所有行以及将跟随的“ - ”和后续三个数字,但这三个数字可以是任何数字。因此,根据上表,我想要返回CSE-001,CSE-002和CSE-103。

很抱歉,如果这个问题可怕,我对这个网站来说比较新。 谢谢!

修改

@GordonLinoff几乎就是我想要的,但是Column1返回类似

的实例呢?
Column1 | Column 2
GDE-002, CSE-101, GDE-003 | faosfd

在这种情况下,我想要返回该特定行,但只返回它的“CSE-101”部分。

2 个答案:

答案 0 :(得分:1)

可以使用regexp_like完成此操作。

对于不区分大小写的匹配使用,

select * from tbl
where regexp_like(column1,'^CSE-[0-9]{3}$','i') 
--this query matches values like csE-101,CsE-001,cse-290 etc.

如果您需要区分大小写的匹配项,请使用

select * from tbl
where regexp_like(column1,'^CSE-[0-9]{3}$')

编辑:在发布上述答案后根据OP的编辑,

select * from tbl
where regexp_like(column1,'(^|\s|,)CSE-[0-9]{3}(,|\s|$)')

答案 1 :(得分:0)

听起来你想要这样的东西:

select substr(col1, 1, 7), t.*
from t
where t.col1 like 'CSE-___%';