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

时间:2015-10-23 22:04:44

标签: mysql pattern-matching

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

enter image description here

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

这是我目前的代码......

SELECT name FROM world
  WHERE name LIKE '%aaa%'

world包含namecontinent

我甚至关闭了吗?

1 个答案:

答案 0 :(得分:4)

您的初始尝试仅匹配名称中包含三个相邻a的国家/地区。请尝试以下方法:

SELECT name FROM world
  WHERE name LIKE '%a%a%a%'

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

Afghanistan分为Afghanista和{{ 1}}。

n分为AlgeriaAlgeria,然后没有剩余要包含,所以它不包含在匹配项中。

a可以分为MadagascarMadagasc和{ {1}}。请注意,第一组包含a,因为r允许任何字符,包括a。 (这里我假设模式匹配是贪婪的,这意味着它使捕获组尽可能大,这使得先前的组更喜欢以后的组。)