-6

从 MySQL 表中town,我必须找到包含 4 个小字母 a 的所有名称的数量

SELECT count(*)
FROM `town`
where `name` REGEXP

我只需要那个正则表达式。任何人?

4

4 回答 4

2
a{4}

应该找到所有出现的 4 个连续的 a。

于 2013-04-18T17:51:55.497 回答
1

a.*a.*a.*a将找到包含至少 4a的所有出现

a{4}会找到所有连续四个 a 的

[aA].*[aA].*[aA].*[aA]是第一个不区分大小写的版本。

[aA]{4}是第二个不区分大小写的版本。

此处不需要正则表达式,如果可能的话,使用 LIKE '%a%a%a%a%' 是不必要的开销。道具交给我从谁那里偷来的 rene。

于 2013-04-18T17:55:00.757 回答
1

从长远来看,非正则表达式解决方案是可能的:

SELECT count(*)
FROM `town`
where length(SUBSTRING_INDEX(name, 'a', 5)) = LENGTH(name)
and length(SUBSTRING_INDEX(name, 'a', 5)) > 3
于 2013-04-18T17:52:53.660 回答
0

这是我测试的问题。现在我们得到了答案

SELECT count(*)
FROM `town`
where
`name` REGEXP BINARY '^([^a]*a[^a]*){4}$'

或者

SELECT count(*)
FROM `town`
where
length(`name`) - length(replace (`name`,'a', '')) = 4
于 2013-04-18T18:35:50.107 回答