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

SQL Server如何提取字符串中最后出现的匹配颜色值

SQL Server 2017 提取字符串末尾匹配颜色实现方案

你可以通过计算每个匹配颜色在字符串中的出现位置,按位置倒序排序后取第一条即可获得最后出现的颜色值,实现代码如下:

首先是匹配单条测试字符串的示例:

SELECT TOP 1 color
FROM (VALUES ('Dove'), ('Frost')) t(Color)
WHERE 'jgkgh FROST tohjgkhg DOVE gfsgfgs' LIKE CONCAT('%', t.Color, '%') 
  AND t.Color IS NOT NULL
-- 按颜色出现位置倒序,位置越大说明出现越晚
ORDER BY CHARINDEX(t.Color, 'jgkgh FROST tohjgkhg DOVE gfsgfgs') DESC

如果需要兼容同个颜色多次出现的场景,精确计算颜色最后一次出现的位置,适配数据表批量查询的写法如下:

SELECT t_main.ID, t_main.Description, last_color.Color
FROM 你的数据表名 t_main
CROSS APPLY (
    SELECT TOP 1 c.Color
    -- 此处可替换为独立的颜色字典表查询
    FROM (VALUES ('Dove'), ('Frost')) c(Color)
    WHERE t_main.Description LIKE CONCAT('%', c.Color, '%')
      AND c.Color IS NOT NULL
    -- 计算颜色最后一次出现的位置,倒序排序
    ORDER BY LEN(t_main.Description) - CHARINDEX(REVERSE(c.Color), REVERSE(t_main.Description)) + 1 DESC
) last_color

补充说明:

  • 如果颜色值数量较多,建议单独维护一张颜色字典表,替换代码中的(VALUES ('Dove'), ('Frost'))子查询即可,维护更方便
  • 如果你使用的排序规则是大小写敏感的,可以将匹配逻辑和位置计算逻辑中的字段统一转为大写或小写,保证匹配结果和预期一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:45:08