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

如何在SQL中提取以'lat'开头且到首个空格结束的字符串

提取JobName中以'lat'开头的单词

问题分析

你当前的SQL语句会从lat出现的位置一直截取到字符串末尾,无法识别单词的结束边界(比如空格、-、(这类分隔符)。要解决这个问题,关键是找到lat开头单词的结束位置,再精准截取。

解决方案1:通过查找分隔符确定截取长度

利用CHARINDEX查找lat之后第一个出现的分隔符(空格、-、(),以此作为单词的结束位置,计算截取长度:

DECLARE @tbl TABLE (id INT IDENTITY PRIMARY KEY, JobName VARCHAR(MAX));

INSERT INTO @tbl (JobName) VALUES
('pl_blob_consolidated - latship'),
('pl_blob - latprod'),
('pl_blob - latdfu - final'),
('pl_blob - latdfu (final_blob)'),
('pl_blob - latdfu - final_blob - sql');

SELECT 
    SUBSTRING(
        JobName,
        CHARINDEX('lat', JobName),
        COALESCE(
            -- 优先取lat后的第一个空格位置
            NULLIF(CHARINDEX(' ', JobName, CHARINDEX('lat', JobName)), 0) - CHARINDEX('lat', JobName),
            -- 其次取lat后的第一个减号位置
            NULLIF(CHARINDEX('-', JobName, CHARINDEX('lat', JobName)), 0) - CHARINDEX('lat', JobName),
            -- 再取lat后的第一个左括号位置
            NULLIF(CHARINDEX('(', JobName, CHARINDEX('lat', JobName)), 0) - CHARINDEX('lat', JobName),
            -- 如果没有分隔符,取到字符串末尾
            LEN(JobName) - CHARINDEX('lat', JobName) + 1
        )
    ) AS JobName
FROM @tbl;

解决方案2:使用正则匹配(PATINDEX)

通过PATINDEX匹配lat开头、后续为字母/数字/下划线的单词,直接定位截取范围:

DECLARE @tbl TABLE (id INT IDENTITY PRIMARY KEY, JobName VARCHAR(MAX));

INSERT INTO @tbl (JobName) VALUES
('pl_blob_consolidated - latship'),
('pl_blob - latprod'),
('pl_blob - latdfu - final'),
('pl_blob - latdfu (final_blob)'),
('pl_blob - latdfu - final_blob - sql');

SELECT 
    SUBSTRING(
        JobName,
        lat_start_pos,
        COALESCE(
            NULLIF(PATINDEX('%[^a-z0-9_]%', SUBSTRING(JobName, lat_start_pos, LEN(JobName))), 0) - 1,
            LEN(JobName) - lat_start_pos + 1
        )
    ) AS JobName
FROM (
    SELECT 
        JobName,
        PATINDEX('%lat%', JobName) AS lat_start_pos
    FROM @tbl
) t
WHERE lat_start_pos > 0;

输出结果

两种方法均会返回你期望的结果:

JobName
latship
latprod
latdfu
latdfu
latdfu

内容的提问来源于stack exchange,提问作者vedant

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:10:32