mySQL:模式匹配名称中的 3 个或更多“a”

Eri*_*and 3 mysql pattern-matching

这是我正在使用的表...

在此输入图像描述

我正在尝试“查找名称中包含三个或更多 a 的国家”。

这是我当前的代码...

SELECT name FROM world
  WHERE name LIKE '%aaa%'
Run Code Online (Sandbox Code Playgroud)

world包含namecontinent

我还接近吗?

Mat*_*ves 6

a您的初次尝试将仅匹配名称中包含三个相邻 s 的国家/地区。请尝试以下操作:

SELECT name FROM world
  WHERE name LIKE '%a%a%a%'
Run Code Online (Sandbox Code Playgroud)

该字符a仅匹配该字符a(区分大小写取决于表和服务器,至少对于 MS SQL)。该字符%将匹配任意数量的字符、任意次数。我的查询中的七个字符意味着最多有七个组。例如:

Afghanistan分为, A, fgh, a, nist,an

Algeria被分解为, A, lgeri, a, , 然后没有剩余a可包含的内容,因此不包含为匹配项。

Madagascar可以分为Mad, a, g, a, sc,ar。请注意,第一组包含a,因为%允许任何字符,包括a。(这里我假设模式匹配是贪婪的,这意味着它使捕获组尽可能大,这更喜欢较早的组而不是较晚的组。)