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

SQL中检查字符串并新增列:判断test字段生成标识列

SQL实现检查字符串并生成条件列的方案

要实现检查test列是否包含字符串'test',并新增group列(包含则值为1,否则为0),可以用CASE WHEN条件语句(标准SQL语法,适配绝大多数数据库),也可以用各数据库专属的字符串函数简化写法,具体如下:

标准SQL通用写法(适配所有数据库)

使用CASE WHEN结合LIKE匹配任意位置的'test'字符串:

SELECT 
    id,
    test,
    CASE 
        WHEN test LIKE '%test%' THEN 1
        ELSE 0
    END AS `group` -- 注意:group是SQL关键字,需用反引号/双引号/方括号转义,不同数据库转义符不同
FROM your_table_name; -- 替换为你的实际表名

各数据库专属简化写法

MySQL/MariaDB

可以用LOCATE函数直接判断字符串位置,搭配IF函数简化:

SELECT 
    id,
    test,
    IF(LOCATE('test', test) > 0, 1, 0) AS `group`
FROM your_table_name;

PostgreSQL

支持POSITION/STRPOS函数,也可以用ILIKE实现不区分大小写的匹配:

-- 区分大小写
SELECT 
    id,
    test,
    CASE 
        WHEN test LIKE '%test%' THEN 1
        ELSE 0
    END AS "group"
FROM your_table_name;

-- 不区分大小写(匹配Test/TEST等)
SELECT 
    id,
    test,
    CASE 
        WHEN test ILIKE '%test%' THEN 1
        ELSE 0
    END AS "group"
FROM your_table_name;

SQL Server

用CHARINDEX函数判断字符串位置:

SELECT 
    id,
    test,
    CASE 
        WHEN CHARINDEX('test', test) > 0 THEN 1
        ELSE 0
    END AS [group]
FROM your_table_name;

Oracle

用INSTR函数判断字符串位置:

SELECT 
    id,
    test,
    CASE 
        WHEN INSTR(test, 'test') > 0 THEN 1
        ELSE 0
    END AS "group"
FROM your_table_name;

注意事项

  • 关键字转义:group是SQL保留关键字,必须用对应数据库的转义符包裹,否则会触发语法错误。
  • 大小写匹配:如果需要忽略大小写匹配,可将test列和匹配字符串统一转为小写/大写,例如LOWER(test) LIKE '%test%'。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 13:21:24