代码之家  ›  专栏  ›  技术社区  ›  David

在(concat())中,不返回MySQL中逗号分隔字符串的结果

  •  2
  • David  · 技术社区  · 6 年前

    进行以下查询:

    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-i-d,343),我尝试将上面的in()替换为引号来包装数据:

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

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

    它看起来与in()中的concat()有关,因为我已经将其简化为 IN (CONCAT("'",643290,"'"))

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Sebastian Brosch Navjyot    6 年前

    你可以用 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