mysql - 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,"'"))
为什么是这样?我哪里错了?
解决方案
您可以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
推荐阅读
- python - 用python绘制图像
- sql - 如何将日期 2019 年 11 月 8 日转换为 11/08/19
- javascript - 如何使用反应钩子通过 onClick 动态更改样式?
- javascript - 如何使用javascript中的onbeforeunload函数验证链接是否被点击
- sql - wix 自定义操作数据库传输超时
- python - 使用python将文本文件解析为列表
- java - 我可以使用 org.reflection 来获取使用通配符的包类吗?
- javascript - 如何将字符串中单词中的所有第一个字母大写,不包括“by”等某些情况?
- javascript - contenteditable 中的嵌套列表
- java - error=13,在 Intellij 中运行 java web 项目时权限被拒绝