使用通配符选择MySQL范围

时间:2014-01-23 08:38:15

标签: mysql regex range wildcard

是否可以根据字符串的某些首字符选择数据库条目,与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,价格

1 个答案:

答案 0 :(得分:1)

使用SUBSTRING_INDEX将范围拆分为开头和结尾。然后将前三个字符位于该范围内的邮政编码与BETWEEN匹配。

SELECT *
FROM shippingInfo
WHERE LEFT(:zipcode, 3) BETWEEN SUBSTRING_INDEX(ziprange, '-', 1) AND SUBSTRING_INDEX(ziprange, '-', -1);

:zipcode是占位符,可获取用户输入的邮政编码。