SELECT * FROM `cpus_z-series` WHERE `Model_ID` LIKE '%Z5%';
上述SQL查询将同时针对500和5000系列。我想知道是否有一种方法可以进一步划分,只选择500或仅5000系列型号。无论我添加多少百分号,都会发生同样的情况。
我假设使用RegEx可以实现这一点,但我对正则表达式并不是那么好。
我忘了提到型号重叠了。例如,Z550存在,但Z5500也存在。此外,还有一些带有尴尬结局的型号,如Z552和Z5505。
答案 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下划线千位