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

MYSQL中如何判断某一数字/数位是否包含在另一个数字中

MySQL数值包含查询解决方案

下面提供两种符合你需求的实现方案:

方案1:Table2的values保持纯数字格式(如示例的13)

适用于需要判断数位是否存在于目标数字中的场景:

SELECT t1.id, t1.value
FROM Table1 t1
CROSS JOIN Table2 t2
-- 只匹配id2为1的Table2记录,有多个匹配需求可以调整该条件
WHERE t2.id2 = 1
  AND LOCATE(CAST(t1.value AS CHAR), CAST(t2.values AS CHAR)) > 0;

逻辑说明:将两个字段转为字符串后,用LOCATE函数判断Table1的value是否是Table2的values的子串,返回值大于0即代表包含,用你提供的测试数据执行后可直接得到预期结果。

方案2:Table2的values改为逗号分隔字符串格式(如'1,3')

适用于需要精准匹配独立数值、避免数位误匹配的场景(比如不会出现value=13误匹配到values=134的问题):

  1. 先调整Table2的values字段为字符串类型,将原存储的数字13改为'1,3'格式存储
  2. 执行以下查询:
SELECT t1.id, t1.value
FROM Table1 t1
CROSS JOIN Table2 t2
WHERE t2.id2 = 1
  AND FIND_IN_SET(t1.value, t2.values) > 0;

逻辑说明:FIND_IN_SET是MySQL内置的逗号分隔字符串元素匹配函数,返回值大于0即代表目标元素存在于分隔串中,匹配精度更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:45:01