![MariaDB必知必会](https://wfqqreader-1252317822.image.myqcloud.com/cover/943/34339943/b_34339943.jpg)
上QQ阅读APP看书,第一时间看更新
9.2.3 匹配多个字符中的一个
“.”匹配任何单个字符,但如果你想要匹配特定的字符怎么办?你可以指定用“[”和“]”括起来的字符集,如下:
▼ 输入
![](https://epubservercos.yuewen.com/AE5E39/18365861508119506/epubprivate/OEBPS/Images/49b-i.jpg?sign=1739585732-TSJ9wqAjnB4qpoG489fl5ymkkn8GR6b3-0-5fe76eb6c1769f097d19ce6116f15eaa)
▼ 输出
![](https://epubservercos.yuewen.com/AE5E39/18365861508119506/epubprivate/OEBPS/Images/49c-i.jpg?sign=1739585732-4CZUuMRIMM60wiflcFBuRjtbEDFvV9nw-0-d7ac4896d991a0743e683a2b0ba6f316)
▼ 分析
这里使用了正则表达式“[123]Ton”。“[123]”定义了一个字符集。这里它的意思是匹配1、2或者3,因此“1ton”和“2ton”都匹配并且被返回(这里没有“3ton”)。
如你所见,“[]”是另一种形式的OR语句,实际上,正则表达式“[123]Ton”是“[1|2|3]Ton”的缩写,后者具有前者同样的功能。然而“[]”字符必须定义OR语句搜索的内容。为了更好地理解,看下面的例子:
▼ 输入
![](https://epubservercos.yuewen.com/AE5E39/18365861508119506/epubprivate/OEBPS/Images/50-i.jpg?sign=1739585732-8A9USPxim6lTRhdw83hMAtlYy64kuPPG-0-3355883b03b08c306cadbb809c5d4840)
▼ 输出
![](https://epubservercos.yuewen.com/AE5E39/18365861508119506/epubprivate/OEBPS/Images/50a-i.jpg?sign=1739585732-wwHqsRresz1xDwDlcJt2C4lI2agb2qGm-0-c75b197dfe5c36d26f9cd6de8db5a512)
▼ 分析
呃,这里出现问题。需要的两行被检索到,然而还有多余的其他3行。这是因为MariaDB认为你的意思是'1'或者'2'或者'3ton'。字符“|”应用于整个字符串,除非它被括起来作为集合。
集合也可以取否定,即它们会匹配任何非指定的字符。为了否定字符集,在集合的开头使用“^”,因此,[123]匹配字符1、2或者3,[^123]匹配任何除了这些字符的字符。