我正在尝试使用REGEXP_REPLACE来替换/删除第一个连字符和3个后续字符。输入表的长度不固定且有所不同。我想提出一份工作快递
5F9B9C7F-ABC-40F4
CODE-AXF 2014 CODE
ADSHLHSALK
预期结果应为
5F9B9C7F-ABC-40F4 ==> 5F9B9C7F-40F4
CODE-AXF-2014 CODE ==> CODE- 2014 CODE
ADSHLHSALK ==> ADSHLHSALK
查询:
SELECT text, column
REGEXP_REPLACE( text,'[-]',NULL )
FROM TABLE
where column= '5';
答案 0 :(得分:1)
您可以使用
REGEXP_REPLACE('5F9B9C7F-ABC-40F4','^([^-]*)-.{3}','\1')
如果您的意思是3 字母,请将.
替换为[a-zA-Z]
。
<强>详情
^
- 字符串开头([^-]*)
- 第1组:除-
-
- 连字符.{3}
- 任意3个字符(或[a-zA-Z]{3}
将匹配3个ASCII字母)。查看online demo打印
答案 1 :(得分:1)
您不需要正则表达式:
SELECT text,
column,
SUBSTR( text, 1, pos - 1 ) || SUBSTR( text, pos + 4 )
FROM (
SELECT text,
column,
INSTR( text, '-' ) AS pos
FROM TABLE
WHERE column = '5'
);