IN(CONCAT())没有返回MySQL中逗号分隔字符串的结果

时间:2018-06-18 10:19:33

标签: mysql concat

采取以下查询:

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

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

现在,由于我存储的数据的性质(逗号分隔的字符串[ie:jkdjif,3-id,343]),我尝试用这个替换上面的IN()来用引号包装数据: / p>

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

然而,这会返回0结果。

它似乎与IN()中的CONCAT()有关,因为我已将其缩小到IN (CONCAT("'",643290,"'"))

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

1 个答案:

答案 0 :(得分:1)

您可以改为使用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