是否可以根据字符串的某些首字符选择数据库条目,与MySQL列中的“范围”匹配?
我会试着通过一个例子来说明这一点: 我需要通过匹配邮政编码来选择数据库条目,但我们从“范围”中的另一个系统中检索了邮政编码,例如100-128。邮政编码10001(纽约)需要匹配此条目。邮政编码的前3位数字需要与100或128或两者之间的任何数字匹配(101,102,... 126,127)。
因此,数据库条目都是050-051,144-146,245-253等,我需要与完整的邮政编码匹配。
是否可以通过查询选择此条目?
感谢任何帮助!
编辑: 我会尽力说清楚:
我只有一个用户输入的邮政编码,例如10001(NY)。
现在我要检索我的送货信息表的所有条目,这些条目与范围(100-128)匹配。
用户邮政编码:07200,检索范围为:064-089
的条目用户邮政编码:33101,检索范围:330-334
的条目等等。
我的送货信息表包含以下列:
ID,country_id,zip_range,价格
答案 0 :(得分:1)
使用SUBSTRING_INDEX
将范围拆分为开头和结尾。然后将前三个字符位于该范围内的邮政编码与BETWEEN
匹配。
SELECT *
FROM shippingInfo
WHERE LEFT(:zipcode, 3) BETWEEN SUBSTRING_INDEX(ziprange, '-', 1) AND SUBSTRING_INDEX(ziprange, '-', -1);
:zipcode
是占位符,可获取用户输入的邮政编码。