如何在逗号分隔的字符串中选择一个数字?

时间:2011-09-16 04:20:21

标签: php mysql database select

我的MySQL表中有一列。列名称为“attached_products”,现在,例如我在那里有一些记录,且attachment_products的值为“1,16,164,1645”,如何选择“16”的所有记录?

我尝试了where子句,它类似于:

select * from websites where attached_products like '%16%'

但它也选择164和21645的记录。

感谢您的帮助! :)

4 个答案:

答案 0 :(得分:6)

因为你使用的数据库设计不好,你可以使用,就像你说的那样:

SELECT * FROM `websites` WHERE (`attached_products` LIKE '%,16,%' OR `attached_products` LIKE '16,%' OR `attached_products` LIKE '%,16' OR `attached_products`='16');

但您应该考虑重新设计数据库以便于选择。您可以添加另一个表格,其中仅包含以下附加产品:

table 1
id | etc ... | etc .... |

attached_products
id | id_product | product

其中id_product来自表1,product是产品ID

答案 1 :(得分:0)

您可以尝试select * from websites where attached_products like '%,16,%'

更好的解决方案是创建一个新表来存储这种关系(包含产品和附加的产品ID)

答案 2 :(得分:0)

试试这个

WHERE FIND_IN_SET('16', attached_products);

答案 3 :(得分:0)

从网站中选择*(选择substr(attached_products,','))= 16.但是好的解决方案是重新设计