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