如何使用REGEXP_SUBSTR截取大写字母+数字前的字符串内容?
使用REGEXP_SUBSTR提取「大写字母+单个数字」模式前的内容
需求说明
原始数据示例:
Security Compliance - P2 - United States-Region B
Sales Leadership - Sales Strategy - E1 - United States-Region A
Site Reliability Engineering - M6 - United Kingdom
需要通过REGEXP_SUBSTR函数,剔除所有「单个大写字母+单个数字」(如P2、E1、M6)及其之后的内容,最终输出:
Security Compliance
Sales Leadership - Sales Strategy
Site Reliability Engineering
实现方案
Oracle 版本
SELECT REGEXP_SUBSTR(your_column_name, '^(.*?)\s-\s[A-Z]\d', 1, 1, NULL, 1) AS cleaned_content FROM your_table;
参数解释:
^(.*?):非贪婪匹配字符串开头到目标模式前的所有内容,确保只取到第一个「大写字母+数字」前的文本\s-\s:匹配原始数据中分隔用的「空格-空格」格式[A-Z]\d:精准匹配单个大写字母加单个数字的模式- 最后一个
1:指定提取正则表达式中的第一个捕获组内容
MySQL 8.0+ 版本
SELECT REGEXP_SUBSTR(your_column_name, '^(.*?)\\s-\\s[A-Z]\\d', 1, 1, 'c', 1) AS cleaned_content FROM your_table;
参数解释:
'c':开启大小写敏感匹配,避免误匹配小写字母- 其余逻辑与Oracle版本一致,注意MySQL中转义符需用双反斜杠
\\
执行上述语句后,即可得到符合要求的清理后文本。
内容的提问来源于stack exchange,提问作者Pramod Bhat
相关产品推荐
相关产品推荐

