【发布时间】:2013-05-22 14:10:39
【问题描述】:
SQL SELECT 查询给定列的行数据中的多个值和范围。
问题描述:
服务器:MySQL
数据库:Customer
表:Lan
列:Allowed VLAN(范围 1-4096)
Allowed VLAN列中的一行数据如下:180,181,200,250-499,550-811,826-mismatched
我需要一个SELECT 语句WHERE 列Allowed VLAN 包括一个给定的数字,例如'600'。给定的数字'600' 甚至是逗号分隔值之一或包含在“250-499”、“550-811”的任何范围内,或者它只是“826-mismatched”范围的起始数字值。
SELECT * WHERE `Allowed VLAN`='600' OR `Allowed VLAN` LIKE '%600%' OR (`Allowed VLAN` BETWEEN '1-1' AND '1-4096');
我无法弄清楚如何使用 WHERE 子句处理数据范围。我已经使用explode() 拆分函数等解决了PHP 代码的问题,但我认为有一些SQL SELECT 解决方案。
如果能提供任何帮助,我将不胜感激。
【问题讨论】:
-
我能给你的最好建议是修复你的数据结构。允许的值应位于单独的表中,每个范围或单个值有不同的行。
-
是的,这是正确的,数据结构很奇怪。数据库设计不是我的,来自客户方面,不确定他们是否会改变它。
标签: mysql sql where-clause between range