You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 18:01:21