如何在Oracle SQL查询结果中移除指定字符串实例?
解决方案
看起来你是想从查询结果的col_one列里移除像SUBSTATION、STATION、SUBST A这类指定的字符串实例对吧?可以在你现有的regexp_substr结果外层套一个REGEXP_REPLACE来实现,再配合TRIM清理多余空格,具体修改如下:
SELECT LOCATIONS.LOCATION, LOCATIONS.DESCRIPTION, TRIM(REGEXP_REPLACE( regexp_substr(LOCATIONS.DESCRIPTION, '[^,]+', 1, 2), '(SUBSTATION|STATION|SUBST A)', '' )) AS col_one FROM locations WHERE LOCATIONS.DESCRIPTION LIKE 'SUB,%' OR LOCATIONS.DESCRIPTION LIKE 'STATION,%'
关键部分说明:
REGEXP_REPLACE(..., '(SUBSTATION|STATION|SUBST A)', ''):用竖线|分隔所有需要移除的字符串,表示匹配其中任意一个,然后替换为空字符串。TRIM():移除目标字符串后可能会留下前后空格,用这个函数可以把多余空格清理掉,让结果更整洁。
对应你的示例数据,修改后结果会变成:
MONARCH
PRICE
DALLAS
COLFAX
BELMONT
GREAT LAKES STEEL
QUINCY
FRENCH LANDING
BERRY
DECOMMIS MCLOUTH A
MAZDA SUBSTATI...
如果后续还有其他需要移除的变体(比如截断的SUBSTATI),直接把它添加到正则表达式的括号里即可,比如改成'(SUBSTATION|STATION|SUBST A|SUBSTATI)'。
内容的提问来源于stack exchange,提问作者Michael B
相关产品推荐
相关产品推荐

