![MariaDB必知必会](https://wfqqreader-1252317822.image.myqcloud.com/cover/943/34339943/b_34339943.jpg)
8.1.1 百分号(%)通配符
最常用的通配符是百分号(%)。在一个搜索字符串中,“%”的意思是任何数量的字符。例如,为了找到以单词jet开头的产品,可以使用下面的SELECT语句:
▼ 输入
![](https://epubservercos.yuewen.com/AE5E39/18365861508119506/epubprivate/OEBPS/Images/43-i.jpg?sign=1739503150-6GZusaD7Elv9p3Qu4qMLR4OKm8TbSCCt-0-bfa23b7f4cbb993fdaf7eb4b4c9888cc)
▼ 输出
![](https://epubservercos.yuewen.com/AE5E39/18365861508119506/epubprivate/OEBPS/Images/43a-i.jpg?sign=1739503150-ng28UhTSeqpAaaxvg7oJ1nIKzSDT8F62-0-76251165d01ade46fdce31b574ee082b)
▼ 分析
这个例子使用了'jet%'搜索模式。当这个语句被识别,任何以jet开头的值都会被检索。“%”告诉MariaDB接收任何跟在单词jet之后的,且有任意数量的字符。
注意
大小写敏感 搜索可能是大小写敏感的,这依赖于列在MariaDB中如何定义。如果区分大小写,'jet%'将不会匹配JetPack 1000。
在搜索模式中,通配符可以用在任何地方,也可以使用多个通配符。下面的例子使用了两个通配符,分别在模式的两端:
▼ 输入
![](https://epubservercos.yuewen.com/AE5E39/18365861508119506/epubprivate/OEBPS/Images/43b-i.jpg?sign=1739503150-PPTOdx5duQWwusIYKVxikwdGwQRCcYnH-0-3d36bb33ebbbd2e309e486382e44f5d4)
▼ 输出
![](https://epubservercos.yuewen.com/AE5E39/18365861508119506/epubprivate/OEBPS/Images/43c-i.jpg?sign=1739503150-sCm0GXSqn4TqsLxWkBHsGuzTNoRP7YPY-0-34f26152af41182aa4668323f13af800)
▼ 分析
搜索模式'%anvil%'的意思是匹配任何位置包含文本anvil的值,无论其他字符出现在anvil之前还是之后。
通配符也可以用在搜索模式中间,尽管这样做通常没什么用。下面的例子寻找所有以s开头,以e结尾的产品。
▼ 输入
![](https://epubservercos.yuewen.com/AE5E39/18365861508119506/epubprivate/OEBPS/Images/44-i.jpg?sign=1739503150-5RHLypGNR0krlCF2ZRMmyqenbMkUVM0a-0-2e5bee043b55f0f926b76bfc394c9fe6)
提示
搜索E-mail地址的一部分 有一种情况在搜索模式中间使用通配符是有用的,那就是根据部分地址搜索E-mail地址,如“WHERE email LIKE'b%forta.com'”。
特别注意的是,%除了可以匹配一个或多个字符外,它还可以匹配零个字符。%在匹配模式中指定的位置代表0个、1个或者多个字符。
注意
小心尾部的空格 尾部的空格会影响通配符匹配。例如,如果任何一个包含anvil的单词在anvil后面含有一个或者多个空格,语句“WHERE prod_name LIKE'%anvil'”就无法匹配,因为最后一个字符l后面还有额外的字符。一个简单的解决方案是始终在搜索模式的结尾处添加一个%。一个更好的解决方案是使用函数去掉空格,这将在第11章讨论。
警告
小心NULL 尽管%通配符看起来好像能够匹配任何内容,有一个例外,那就是NULL。即便是WHERE prod_name LIKE'%'也不能匹配产品名字是NULL值的行。