8.1.1 百分号(%)通配符

最常用的通配符是百分号(%)。在一个搜索字符串中,“%”的意思是任何数量的字符。例如,为了找到以单词jet开头的产品,可以使用下面的SELECT语句:

▼ 输入

▼ 输出

▼ 分析

这个例子使用了'jet%'搜索模式。当这个语句被识别,任何以jet开头的值都会被检索。“%”告诉MariaDB接收任何跟在单词jet之后的,且有任意数量的字符。

注意

大小写敏感 搜索可能是大小写敏感的,这依赖于列在MariaDB中如何定义。如果区分大小写,'jet%'将不会匹配JetPack 1000。

在搜索模式中,通配符可以用在任何地方,也可以使用多个通配符。下面的例子使用了两个通配符,分别在模式的两端:

▼ 输入

▼ 输出

▼ 分析

搜索模式'%anvil%'的意思是匹配任何位置包含文本anvil的值,无论其他字符出现在anvil之前还是之后。

通配符也可以用在搜索模式中间,尽管这样做通常没什么用。下面的例子寻找所有以s开头,以e结尾的产品。

▼ 输入

提示

搜索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值的行。