mySQL:模式匹配3或更多“;a';s";名义上
这是我正在使用的桌子 我试图“找到那些名字中有三个或更多a的国家” 这是我当前的代码mySQL:模式匹配3或更多“;a';s";名义上,mysql,pattern-matching,Mysql,Pattern Matching,这是我正在使用的桌子 我试图“找到那些名字中有三个或更多a的国家” 这是我当前的代码 SELECT name FROM world WHERE name LIKE '%aaa%' 世界包含名称和大陆 我是否接近了?您最初的尝试将只匹配名称中有三个相邻as的国家。请尝试以下操作: SELECT name FROM world WHERE name LIKE '%a%a%a%' 字符a仅与字符a匹配(例如,区分大小写取决于表和服务器)。字符%将匹配任意数量的字符,任意次数。我的查询中的
SELECT name FROM world
WHERE name LIKE '%aaa%'
世界
包含名称
和大陆
我是否接近了?您最初的尝试将只匹配名称中有三个相邻
a
s的国家。请尝试以下操作:
SELECT name FROM world
WHERE name LIKE '%a%a%a%'
字符a
仅与字符a
匹配(例如,区分大小写取决于表和服务器)。字符%
将匹配任意数量的字符,任意次数。我的查询中的七个字符意味着最多有七个组。例如:
阿富汗
分为
、A
、fgh
、A
、nist
、A
和n
阿尔及利亚
分为
、A
、lgeri
、A
、
,然后没有剩余的A
要包含,因此它不作为匹配项包含
马达加斯加
可分为Mad
、a
、g
、a
、sc
、a
和r
。请注意,第一个组包含一个a
,因为%
允许任何字符,包括a
。(在这里,我假设模式匹配是贪婪的,这意味着它使捕获组尽可能大,这更喜欢较早的组而不是较晚的组。)这是有效的,但我不明白为什么。我理解为什么一个国家有三个“a”是正确的,但这个代码如何包含问题的“或更多”部分?@ea87扩展了答案,解释了%
将如何适用于三个国家,希望能说明这一点。精确匹配三个a
s比匹配三个或更多a
s要困难得多——最简单的方法是包括a,而不是排除四个或更多a
s。