我有一些以逗号分隔的记录,我将其保存在MySQL数据库中。
我有下表和记录:
tbl_checks
id | items
----+------
1 | 2,5
2 | 2,3
所以我想获取数据,其中items
列中的一个逗号分隔值为5。
我试过了:
$sql = "SELECT * FROM tbl_checks WHERE items="; //unable todo at here
这样我就可以:
$results = $this->db->query($sql)->result() //codeigniter script
我也试过
$sql = "SELECT * FROM tbl_checks WHERE items=".in_array(5)//this fails
答案 0 :(得分:1)
如果您想查询此字段,那么您当前的方法并不好。通常,您将使用规范化并将该数据拆分为多个表,这些表可以更好地查询。
如果您坚持使用此方法,则可以使用LIKE
和CONCAT
。
$id = '2';
$sql = "SELECT * FROM tbl_checks WHERE CONCAT(',', items, ',') LIKE '%,$id,%'";
答案 1 :(得分:0)
$ value = 5;
$ result = $ this-> db-> where(“FIND_IN_SET($ value,items)!=”,0) - >获得( “tbl_checks”) - > result_array();
答案 2 :(得分:-1)
我同意这样的数据库不是很好的构建。这个查询的任何方式都应该有效:
SELECT *
FROM tbl_checks
WHERE ( items LIKE "5,%" )
OR (item LIKE "%,5");