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的问题):
- 先调整Table2的values字段为字符串类型,将原存储的数字13改为
'1,3'格式存储 - 执行以下查询:
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
相关产品推荐
相关产品推荐

