SQL - 定界到特定范围

时间:2015-02-19 12:29:20

标签: php mysql sql

SELECT * FROM `cpus_z-series` WHERE `Model_ID` LIKE '%Z5%';

上述SQL查询将同时针对500和5000系列。我想知道是否有一种方法可以进一步划分,只选择500或仅5000系列型号。无论我添加多少百分号,都会发生同样的情况。

我假设使用RegEx可以实现这一点,但我对正则表达式并不是那么好。

修改

我忘了提到型号重叠了。例如,Z550存在,但Z5500也存在。此外,还有一些带有尴尬结局的型号,如Z552和Z5505。

3 个答案:

答案 0 :(得分:2)

首先,为什么前面有通配符?不会这样做吗?

WHERE `Model_ID` LIKE 'Z5%';

如果是这样,你可以使用字符串的长度:

WHERE `Model_ID` LIKE 'Z5%' AND LENGTH(Model_ID) = 4

当然,您也可以使用正则表达式。但是,使用此方法的优点是它实际上可以利用Model_Id上的索引,因为LIKE模式以固定字符开头。

此外,您可以使用_来表示like中的任何单个字符:

WHERE `Model_ID` LIKE 'Z5__'

这可能与你想要做的最接近。

答案 1 :(得分:1)

仅选择5xx型号

SELECT * 
FROM `cpus_z-series` 
WHERE `Model_ID` REGEXP '^Z5[0-9]{2}$'

答案 2 :(得分:1)

您可以使用_下划线

来限制它
SELECT * FROM cpus_z-series WHERE Model_ID LIKE '%Z5__';
  

两个下划线,数百和3下划线千位