如果列具有逗号saperated值并包含字符串的任何字符,如何在mysql中查找结果

时间:2017-06-01 06:41:24

标签: php mysql

嗨我想在mysql中选择一个查询。我有一个表名delivery_area,并有一个列名start_with_zip_postal。列有逗号分隔值100,101现在我想搜索结果我有一个邮政编码101245现在我想搜索如果start_with_zip_postal有任何匹配字符串101245 现在一行将检索因为列在mysql中有101个值 为了更好的站立,请在屏幕截图中查看我的表结构 enter image description here

3 个答案:

答案 0 :(得分:0)

您可以使用以下find_in_set查询:

select * from deleivery_areas where find_in_set(substring('101245',1,3),start_with_zip_postal);

答案 1 :(得分:0)

您可以使用FIND_IN_SET而不是LIKE。

SELECT * FROM delivery_areas WHERE FIND_IN_SET(LEFT('101245',3), start_with_zip_postal);

要在MySQL中搜索逗号分隔值,我们可以使用FIND_IN_SET。

答案 2 :(得分:0)

您需要规范化数据,以便每个前缀位于不同的行中。创建表delivery_area_zip_prefix

CREATE TABLE delivery_area_zip_prefix (
    id INT AUTO_INCREMENT PRIMARY KEY,
    delivery_area_id INT,
    starts_with_zip_postal VARCHAR(16),
    CONSTRAINT FOREIGN KEY (delivery_area_id) REFERENCES delivery_area (id)
);

然后你可以这样做:

SELECT d.*
FROM delivery_area AS d
JOIN delivery_area_zip_prefix AS p ON d.id = p.delivery_area_id
WHERE LOCATE('101245', p.starts_with_zip_postal) == 1