从 MySQL 表中town
,我必须找到包含 4 个小字母 a 的所有名称的数量
SELECT count(*)
FROM `town`
where `name` REGEXP
我只需要那个正则表达式。任何人?
a{4}
应该找到所有出现的 4 个连续的 a。
a.*a.*a.*a
将找到包含至少 4a
的所有出现
a{4}
会找到所有连续四个 a 的
[aA].*[aA].*[aA].*[aA]
是第一个不区分大小写的版本。
[aA]{4}
是第二个不区分大小写的版本。
此处不需要正则表达式,如果可能的话,使用 LIKE '%a%a%a%a%' 是不必要的开销。道具交给我从谁那里偷来的 rene。
从长远来看,非正则表达式解决方案是可能的:
SELECT count(*)
FROM `town`
where length(SUBSTRING_INDEX(name, 'a', 5)) = LENGTH(name)
and length(SUBSTRING_INDEX(name, 'a', 5)) > 3
这是我测试的问题。现在我们得到了答案
SELECT count(*)
FROM `town`
where
`name` REGEXP BINARY '^([^a]*a[^a]*){4}$'
或者
SELECT count(*)
FROM `town`
where
length(`name`) - length(replace (`name`,'a', '')) = 4