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

如何在SQL查询中引用列值?筛选名称不含自身ID的行

解决SQL筛选name列不包含对应id值的问题

你的问题出在原查询里的'%.id'把id当成了字符串字面量,而不是引用表中id列的实际值,所以无法正确匹配每行对应的id。

要实现需求,需要把id列的值转换为字符串(如果id是数值类型),再拼接成LIKE的匹配模式,不同数据库的写法略有差异:

MySQL/MariaDB

使用CONCAT()函数拼接字符串:

SELECT *
FROM MY_TABLE
WHERE name NOT LIKE CONCAT('%.', id, '%');

SQL Server

可以用+运算符拼接,注意要把数值类型的id转为字符串:

SELECT *
FROM MY_TABLE
WHERE name NOT LIKE '%.' + CAST(id AS VARCHAR(20)) + '%';

或者用CONCAT()函数(SQL Server 2012及以上支持):

SELECT *
FROM MY_TABLE
WHERE name NOT LIKE CONCAT('%.', CAST(id AS VARCHAR(20)), '%');

Oracle

使用||作为字符串拼接符:

SELECT *
FROM MY_TABLE
WHERE name NOT LIKE '%. ' || id || '%';

核心逻辑是:让每一行都用自己的id值生成匹配规则,检查name列是否不包含".id"格式的子串,这样就能精准筛选出name里没有对应id的行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 19:05:32