首页 > 解决方案 > IN(CONCAT()) 未在 MySQL 中返回逗号分隔字符串的结果

问题描述

进行以下查询:

SELECT COUNT(1)
FROM tableA
INNER JOIN tableB
ON tableA.ID = tableB.pid
WHERE tableA.foo IN ('1234')
AND tableB.bar = 555

上面的查询返回 1 个结果。

现在,由于我存储的数据的性质(逗号分隔的字符串[即:jkdjif,3-id,343),我尝试用它替换上面的 IN() 以用引号将数据包装起来:

WHERE tableA.foo IN (CONCAT("'",REPLACE('1234',",","','"),"'"))

但是,这会返回 0 个结果。

它看起来与 IN() 中的 CONCAT() 有关,因为我已将其缩减为IN (CONCAT("'",643290,"'"))

为什么是这样?我哪里错了?

标签: mysqlconcat

解决方案


您可以FIND_IN_SET改用:

SELECT COUNT(1)
FROM tableA INNER JOIN tableB ON tableA.ID = tableB.pid
WHERE FIND_IN_SET(tableA.foo, 'jkdjif,3-i-d,343') > 0
AND tableB.bar = 555

推荐阅读