如何用SQL提取起始与结束关键词之间的特定字符串?
提取ID值的解决方案
因为字符串长度、格式不固定,依赖固定位置的substring无法适配,用正则表达式匹配关键词间的内容是更可靠的方案,以下是不同场景的实现:
通用匹配规则
核心正则表达式:
(?<=ID: ).*?(?=, |$)
(?<=ID: ):正向预查,确保目标内容前是ID:.*?:非贪婪匹配任意字符,避免误匹配到后续无关内容(?=, |$):正向预查,匹配到,或字符串结尾就停止,兼容ID在末尾的情况
Python 实现
import re text = "Customer: check, ID: 3963f4bb-59fb-4a26, NAME: TAMIL" match_result = re.search(r'(?<=ID: ).*?(?=, |$)', text) if match_result: extracted_id = match_result.group() print(extracted_id) # 输出:3963f4bb-59fb-4a26
SQL 实现(以MySQL为例)
针对数据库字符串列提取,使用REGEXP_SUBSTR函数:
SELECT REGEXP_SUBSTR(your_column_name, 'ID: (.*?)(, |$)', 1, 1, 'e') AS extracted_id FROM your_table_name;
'e'参数指定提取括号内的分组内容,精准获取ID: 到分隔符/结尾间的ID值。
Java 实现
import java.util.regex.Matcher; import java.util.regex.Pattern; public class IDExtractor { public static void main(String[] args) { String text = "Customer: check, ID: 3963f4bb-59fb-4a26, NAME: TAMIL"; Pattern pattern = Pattern.compile("ID: (.*?)(, |$)"); Matcher matcher = pattern.matcher(text); if (matcher.find()) { String extractedId = matcher.group(1); System.out.println(extractedId); // 输出:3963f4bb-59fb-4a26 } } }
内容的提问来源于stack exchange,提问作者Kesavan Balakrishnan
相关产品推荐
相关产品推荐

