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__';
两个下划线代表

百,三个下划线代表千