作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个名为 category_ids (text)
的表字段,它将另一个表的 ID 保存为 "1,2,3"
。
现在我想将此 category_ids
用于 sql IN()
查询。查询类似于 tab1.category_id IN(从 tab2 中选择 category_ids)
。但我面临的问题是 select category_ids from tab2
返回 '1,2,3'
所以 IN()
查询不起作用。
有什么简单的方法可以将 '1,2,3'
转换为 ('1','2','3')
或 ( 1,2,3)
在 sql 中?
最佳答案
您可以在此处使用 FIND_IN_SET
:
SELECT *
FROM tab1
WHERE FIND_IN_SET(tab1.category_id,
(select category_ids from tab2));
这只是一个示例查询,您的实际查询可能会有所不同。但关键是,如果你想在 CSV 字符串 '1,2,3'
中搜索 '1'
,那么有一种方法可以做到。
正如其他人已经提到的,您应该避免在表格中存储 CSV 数据。当我看到 FIND_IN_SET
被大量使用时,通常会有一股气味。
关于mysql - 在 sql 中将值从 ('1,2,3' ) 拆分为 ('1' ,'2' ,'3' ) 或 (1,2,3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48946348/
我是一名优秀的程序员,十分优秀!