php - 你如何在 MySQL/PHP 中存储和搜索数字间隔?

标签 php mysql database search intervals

我有以下场景:

用户将为每个产品输入一个间隔和/或单个逗号分隔的数字代码。

部分表格示例:

name        | codes
-----------------------------------
Product 1   | 239,300-350

Product 2   | 430-450,500,29

Product 3   | 780,2

例如,当用户搜索代码321时,应该返回Product 1这一行。

有没有一种方法可以通过单个查询进行搜索?

最佳答案

我建议用两个表代替:

products:
 - name
 - id

code_ranges:
 - product_id
 - range_start
 - range_end

然后你可以通过使用连接得到你想要的(对于一些$input_id):

SELECT product.id, product.name
FROM products 
JOIN code_ranges ON products.id = code_ranges.product_id
WHERE code_ranges.range_start <= $input_id
    AND code_ranges.range_end >= $input_id

您可以在 code_ranges 表中为每个产品设置多行以表示多个不同的范围(例如,2-4,7-10 将有两行,其中一行包含range_start=2range_end=4,另一个用于 7-10 范围)。

不是范围的产品代码将被简单地视为开始和结束相同的范围(例如,7 将是 range_start=7 并且range_end=7).

关于php - 你如何在 MySQL/PHP 中存储和搜索数字间隔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9695347/

相关文章:

php7 zend 扩展 : refcount for stack variable?

php - SQL - 如果存在于另一个表中

php - 在 php 中处理实时通知的最佳方法是什么?

mysql - 向mysql中的特定行添加额外字符

php - MySQL:管理用户账单和送货地址

php - 管理员在不知道用户密码的情况下以用户身份登录?

php - 多级登录页面根据用户角色php将用户重定向到不同的页面

PHP 和 MySQL 最小和最大可能的日期

c# - 使用二进制搜索或并行编程在 C# 中搜索 SQL Server 数据库

PHP/mySQL 查询选择日期 ("N") 加 1 天