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
相关产品推荐
相关产品推荐

