繁体   English   中英

SQL-分隔到特定范围

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM