MySQL - 用于逗号列表的正则表达式 - 更大或更低

时间:2013-06-10 09:44:15

标签: mysql sql

设置场景..用户输入一个zipcode min&最大。 在数据库中,我有以下字段:

zip_min, zip_max, zip_list(逗号码的逗号列表)

min&最大用户然后输入必须匹配这3个字段。 我被困在哪里是在zip_list。只是看不到或谷歌我的方式。 我最初的想法是使用正则表达式..但似乎你不能采用匹配值并使用更大/更低的值?

任何人都知道如何使用逗号列表中的数字大于/小于匹配?或者,如果它甚至可能?

-

示例:

第1行:
zip_min = 6000,
zip_max = 7000,
zip_list = 8000,8100

用户输入:
min = 7000
max = 8000

结果必须匹配,逗号列表中的8000位于最小值/最大值之间,而zip_max也会匹配,因为用户输入的最小值为7000.

1 个答案:

答案 0 :(得分:1)

按如下方式更改结构:


+---------+  +-----------+
| Entity  |  | ZipList   |
+---------+  +-----------+
| id      |  | entity_id |  <= references a row in table "Entity"
| zip_min |  | zip_code  |  <= one record for each item in your current "zip_list" column
| zip_max |  +-----------+
+---------+

然后你的查询变成这样:

SELECT ZipList.zip_code
FROM ZIpList
JOIN Entity ON ZipList.entity_id = Entity.id
WHERE entity_id = 1 -- for example
AND zip_code BETWEEN @user_input_min AND @user_input_max

注意只有问题的一半被涵盖。一旦澄清了要求,我将编辑这篇文章。