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


How to select a number in a comma separated string?

我的MySQL表中有一个列。列名是"attached_products",现在,例如,我有一些记录在那里,attached_products有一个值"1,16,164,1645",我如何选择所有记录"16"?

我尝试了where子句,它是这样的:

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

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

谢谢你的帮助!:)

既然你使用了一个糟糕的数据库设计,你可以使用,就像你说的:

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

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

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

试试这个

WHERE FIND_IN_SET('16', attached_products);

select * from websites where (select substr(attached_products, ',')) = 16。但是好的解决方案是重新设计