我想从表中选择包含特定字符串的所有行,但之后还返回以下通常是动态的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”部分。
答案 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-___%';