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

请求编写Case表达式实现Desc字段的智能分类(忽略大小写与附加内容)

编写CASE表达式实现分类映射

针对你需求中Desc字段存在大小写变化、附加内容的情况,以下是不同数据库环境下的CASE表达式实现方案:

基础模糊匹配方案(兼容多数数据库)

通过LOWER()统一转换为小写,结合LIKE模糊匹配关键词,覆盖大小写差异与前后附加内容:

SELECT
    No,
    Desc,
    CASE
        WHEN LOWER(Desc) LIKE '%apple%' THEN 'fruit'
        WHEN LOWER(Desc) LIKE '%tomato%' THEN 'veg'
        -- 可按需添加更多分类规则
        ELSE 'unknown' -- 处理未匹配的兜底情况
    END AS Name
FROM your_table_name;

正则精准匹配方案(适合支持正则的数据库)

如果需要避免类似pineapple被误判为apple分类的情况,可使用正则匹配关键词开头的内容:

PostgreSQL 版本

SELECT
    No,
    Desc,
    CASE
        WHEN Desc ~* '^apple' THEN 'fruit'
        WHEN Desc ~* '^tomato' THEN 'veg'
        ELSE 'unknown'
    END AS Name
FROM your_table_name;

~*表示不区分大小写的正则匹配,^apple限定匹配以apple开头的内容。

MySQL 版本

SELECT
    No,
    Desc,
    CASE
        WHEN REGEXP_LIKE(Desc, '^apple', 'i') THEN 'fruit'
        WHEN REGEXP_LIKE(Desc, '^tomato', 'i') THEN 'veg'
        ELSE 'unknown'
    END AS Name
FROM your_table_name;

'i'参数启用不区分大小写匹配,^apple限定开头匹配。

SQL Server 版本

SELECT
    No,
    [Desc], -- Desc是SQL关键字,需用方括号转义
    CASE
        WHEN [Desc] LIKE 'apple%' COLLATE SQL_Latin1_General_CP1_CI_AS THEN 'fruit'
        WHEN [Desc] LIKE 'tomato%' COLLATE SQL_Latin1_General_CP1_CI_AS THEN 'veg'
        ELSE 'unknown'
    END AS Name
FROM your_table_name;

COLLATE指定不区分大小写的排序规则,apple%限定开头匹配。

Oracle 版本

SELECT
    No,
    "Desc", -- Oracle中关键字需用双引号转义
    CASE
        WHEN REGEXP_LIKE("Desc", '^apple', 'i') THEN 'fruit'
        WHEN REGEXP_LIKE("Desc", '^tomato', 'i') THEN 'veg'
        ELSE 'unknown'
    END AS Name
FROM your_table_name;

'i'参数启用不区分大小写匹配。

注意事项

  • CASE表达式会返回第一个匹配的结果,若Desc可能包含多个关键词,需注意规则的排序顺序。
  • 若需严格匹配核心关键词,优先选择正则开头匹配的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 14:17:22