对于不区分大小写的串比较,有可能把多个字符认为是相等的,这取决于所用的字符集。例如“e”和“é”对于比较和排序操作可能是相同的。二进制(区分大小写)比较利用字符的ASCII 值来完成。
模式匹配允许查找值而不必给出精确的直接值。MySQL利用LIKE 运算符和通配符“%”(匹配任意的字符序列)和“ _”(匹配任意单个字符),提供SQL 的模式匹配。MySQL还基于类似于诸如g r e p、sed 和vi 等UNIX 程序中所用的REGEXP 运算符和扩展正规表达式,提供模式匹配。为了完成模式匹配,必须使用这些模式匹配运算符中的某一个;不能使用“ =”。为了进行相反的模式匹配,可使用NOT LIKE 或NOT REGEXP。
除了使用的模式运算符和模式字符不同外,这两种模式匹配还在以下重要的方面存在差异:
■ 除非至少有一个操作数为二进制串,否则LIKE 是不区分大小写的。REGEXP 是区分大小写的。(在MySQL3.23.4 以后的版本中,除非至少有一个操作数是二进制串,否则REGEXP 是不区分大小写的。)
■ 仅当整个串匹配,SQL 才是模式匹配的。仅当相应的模式在串中某一处出现,正规表达式才匹配。用于LIKE 运算符的模式可以包括“%”和“_”通配符。例如,模式“ F r a n k %”与任何以“F r a n k”起头的串匹配:
通配符“%”与任何串匹配,其中包括与空字符序列匹配,因此“ Frank %”与“ Frank”匹配: