通配符过滤数据
LIKE操作符
假设要搜寻的数据只需要有其中的一部分即可,即要搜索文本中带有anvil的字符就,可以使用通配符。
通配符:用来匹配值的一部分的特殊字符。
搜索模式:有字面值,通配符或两者结合组成的搜索条件。
百分号(%)通配符
%表示任意字符出现的次数。
这个例子中就搜索所有以jet开头的product,并且不管jet后面有多少字符。
这个例子检索含有anvil的product,并且不管anvil前面和后面有多少字符。
%也可以检索中间,例如我们要检索所有以s开头e结尾的product。
如果只有一个%会怎么样?
会发现,这会搜索所有的product。
下划线(_)通配符
下划线通配符的作用和%类似,但_只检索单个字符。
这个例子中_匹配到1和2 但.5没有被匹配到。
同时要注意的是_和ton之间有没有空格要根据原来的prod_name有没有空格,毕竟空格也是一个字符。
没有空格可能就检索不出数据。但%不会出现这种情况。
下面这几个例子体现了_与%的区别。
正则表达式
介绍
正则表达式用来检索匹配文本中特殊的串(即字符的集合)。
使用正则表达式
基本字符匹配
从一个简单的例子开始,下面检索prod_name中包含文本1000的列。
除了LIKE被REGEXP替换之外,这个例子和之前的LIKE子句很相似。
REGEXP就是正则表达式的符号。
这个命令检索含有1000的列。
在看下一个例子
这个例子却检索出两个列,这是因为 ‘ . '操作符,这个是正则表达式里一个重要的字符,可以与任意字符匹配。
但如果换成LIKE就不会有检索结果。
进行 or 匹配
为进行搜索两个串之一,可以使用 | 操作符。
这个例子检索含有文本1000或2000的列,但要注意不能1000和|之间不能有空格,如果是’1000 | 2000’,就会检索含有文本 ‘1000 ’, ‘ 2000’的列,1000后面有个空格,2000前面有个空格。
检索结果也会发生变化。
这个只有一列是因为,只含有‘空格’+ ‘2000’的列却不含有‘1000’ + ‘空格’的列。
可以使用两个以上的条件,如‘1000|2000|3000’就检索含有1000或2000或3000的列。
匹配几个字符之一
如果想匹配特定的字符,且是单一字符可以使用[]括起来的字符来完成。
这个正则表达式[123] ton 表示匹配1或2或3,即1, 2, 3中的一个。
事实上这个是[1|2|3]的缩写,但我们不能用’1|2|3 ton’,因为这会被认为检索含有’1’或’2’或’3 ton’的列。
匹配范围
集合可以用来定义要匹配的一个或多个字符。
如[0123456789]可以写为[0-9],但要注意前面的数字要小于后面的。[a-z]匹配所有字母。
这个例子匹配含有1-5之间的任意数字的列。
正则表达式后面的内容将于下一篇博客讲述。