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

如何用SQL查询全表数据并标记含指定字符串的行?

实现全表查询并标记包含指定字符串的行

需要查询表中所有行,同时新增containsString字段(1表示title包含“foo”,0表示不包含),替代先查全表再用程序处理的方案。当前尝试的SQL仅返回匹配行,无法满足需求。

示例原表

idtitle
1foo
2bar
3foobar
4moo
5cow

期望结果表

idtitlecontainsString
1foo1
2bar0
3foobar1
4moo0
5cow0

错误的尝试SQL

SELECT t1.id, t1.title, t2.id as containsString 
FROM `news` t1, `news` t2
where t1.id = t2.id
LEFT JOIN news t2 ON 
WHERE t2.title LIKE '%foo%'

正确SQL实现

不需要关联表,直接用条件判断函数即可,主流数据库的实现如下:

MySQL/MariaDB

可以用IF函数或CASE语句:

SELECT 
    id, 
    title, 
    IF(title LIKE '%foo%', 1, 0) AS containsString
FROM news;

或者:

SELECT 
    id, 
    title, 
    CASE WHEN title LIKE '%foo%' THEN 1 ELSE 0 END AS containsString
FROM news;

PostgreSQL

使用CASE语句或BOOL_TO_INT函数:

SELECT 
    id, 
    title, 
    CASE WHEN title LIKE '%foo%' THEN 1 ELSE 0 END AS containsString
FROM news;
-- 简化写法
SELECT 
    id, 
    title, 
    BOOL_TO_INT(title LIKE '%foo%') AS containsString
FROM news;

SQL Server

用CASE语句实现:

SELECT 
    id, 
    title, 
    CASE WHEN title LIKE '%foo%' THEN 1 ELSE 0 END AS containsString
FROM news;

以上语句会返回表中所有行,通过条件判断title是否包含“foo”动态生成containsString字段值,无需额外关联表,性能更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 15:05:13