[英]SQL - Delimiting to a Specific Range
SELECT * FROM `cpus_z-series` WHERE `Model_ID` LIKE '%Z5%';
上面的SQL查询将同时针对500和5000系列。 我想知道是否有办法进一步限定此范围,以便仅选择500或5000系列型号。 无论我添加多少个百分号,都会发生同样的情况。
我以为使用RegEx可能做到这一点,但是对于正则表达式我并不是那么好。
我忘了提到型号重叠。 例如,存在Z550,但是Z5500也存在。 而且,有些型号的结尾很尴尬,例如Z552和Z5505。
首先,为什么在前面放通配符? 这会做同样的事情吗?
WHERE `Model_ID` LIKE 'Z5%';
如果是这样,您可以只使用字符串的长度:
WHERE `Model_ID` LIKE 'Z5%' AND LENGTH(Model_ID) = 4
当然,您也可以使用正则表达式。 但是,使用此方法的好处是它实际上可以利用Model_Id
上的索引,因为LIKE
模式以固定字符开头。
另外,您可以使用_
来表示任何单个字符, like
:
WHERE `Model_ID` LIKE 'Z5__'
这可能最接近您要执行的操作。
仅选择5xx型号
SELECT *
FROM `cpus_z-series`
WHERE `Model_ID` REGEXP '^Z5[0-9]{2}$'
您可以使用_
下划线来限制它
SELECT * FROM cpus_z-series WHERE Model_ID LIKE '%Z5__';
两个下划线代表一百,三个下划线代表千
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.