带有逗号分隔值的 Codeigniter Mysql 列
Posted
技术标签:
【中文标题】带有逗号分隔值的 Codeigniter Mysql 列【英文标题】:Codeigniter Mysql column with comma seperated values 【发布时间】:2018-08-22 13:11:49 【问题描述】:我想针对单个值测试具有多个值的字段,我的 SQL 就像。
WHERE id (1);
数据库值就像
id
---
1,2
2,3
1,3,4
代码点火器
$this->db->select('*');
$this->db->from('content');
$this->db->where('name', $name);
$this->db->where('id', $id);
我试过了
$this->db->where_in('id', explode(',', $id));
但它不起作用。请帮我解决这个问题。
【问题讨论】:
where_in 有什么问题? 如果 id 值(例如(1,2))和数据库值(1,2)相同,where_in 正在工作。如果 id 值为 1 且数据库值为(1,2),则其不工作。@ Kaleem 那么 like() 对你来说不是一个好的选择。当您使用 id=2 进行搜索时,它将获得具有 2,12,22,32 ...222 等的记录。 Please look at this option。看起来很适合您的问题 感谢您的建议@Kaleem 【参考方案1】:要从给定集合中查找值,您可以使用FIND_IN_SET
$this->db->where("FIND_IN_SET(".$id.",id) >", 0);
注意:这种设计被认为是不好的设计,你应该规范你的结构,我建议你看看Database Normalization
【讨论】:
【参考方案2】:如果您使用like()
而不是where()
会怎样
$this->db->like('id', $id);
// Produces: WHERE `id` LIKE '%2%' ESCAPE '!'
注意:如果 2 是值
2
,22
,222
将通过此
【讨论】:
【参考方案3】:请试试这个:
$this->db->select('*')->from('table_name')
->where("column_name LIKE '%$key_values%'")->get();
【讨论】:
以上是关于带有逗号分隔值的 Codeigniter Mysql 列的主要内容,如果未能解决你的问题,请参考以下文章
如何使用带有逗号分隔值的单元格通过apps脚本创建动态下拉列表
使用 laravel 和 vue js 从 mysql 数据库中检查带有逗号分隔值的复选框