Rumah  >  Artikel  >  pangkalan data  >  mysql中使用通配符进行过滤教程

mysql中使用通配符进行过滤教程

巴扎黑
巴扎黑asal
2017-05-02 18:19:401634semak imbas

什么是通配符?

通配符就是用来匹配值的一部分的特殊字符。

搜索模式:由字面值、通配符或者两者组合构成的搜索条件。


1.like操作符:

前面介绍的所有操作符都是针对一直值进行过滤的。不管是匹配还是多个值,测试大于还是小于已知值,或者检查某个范围的值,共同点是过滤中使用的值都是已知的。但是,这种过滤方法并不是任何时候都好用,例如,怎样搜索产品名中包含文本anvil的所有产品?用简单的比较操作符坑定不行,必须使用通配符。利用通配符可创建比较特定数据搜索模式。在这个例子中,如果你想找出名称包含anvil的所有产品,可构造一个通配符搜索模式,找出产品名中任何位置出现anvik的产品。

为在搜索子句中使用通配符,必须使用link操作符。like指示MySQL,后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较。


2.百分号(%)通配符

最常使用的通配符是百分号(%)。在搜索串中,%表示任何字符出现的任意次数。例如,为了找出所有以词a开头的产品,可以使用以下select语句:

select prod_id,prod_name from products where prod_name like 'a%';

此例子使用了搜索模式'a%'。在执行这条句子时,讲检索任意以a开头的词。%告诉MySQL接受a之后的任意字符,不管它有多少字符。

注意:根据MySQL的配置方式,搜索可以使区分大小写的。如果区分大小写,‘a%’与Apache这个词不相匹配。

通配符可在搜索模式中任意位置使用,并且可以使用多个通配符。下面例子使用两个通配符,它们位于模式的两端:

select prod_id,prod_name from products where prod_name like '%a%';

代码分析:搜索模式'%a%'表示匹配任何位置包含文本anvil的值,而不论它之前或之后出现什么字符。

通配符也可以出现在搜索模式中间。比如下面这个示例:

select prod_namefrom products where prod_name like '%a%';

重要的是要注意到,除了一个或多个字符外,%还能匹配0个字符。%代表搜索模式中给定位置的0个、1个或多个字符。

注意:1.为空格可能会干扰通配符匹配。比如在 '%a%'的a后面有一个或多个空格时,则子句where prod_name like '%a%';将不会匹配它们,因为在a后有多余字符。解决这个问题的一个简单的办法是在搜索模式最后加一个%。另一个更好的办法是用函数将收尾空格去除。

2.虽然似乎%通配符可以匹配任何东西,但是有一个例外,即NULL。即使where prod_name like ‘%’也不能匹配用值NULL作为产品名的行。


3.下划线‘_’通配符

另一个有用的通配符是下滑线(_)。下划线的用途与%一样,但下划线之匹配单个字符而不是多个字符。

举个例子:

select prod_id,prod_name from products where products where prod_name like '_ ton anvil';

输出:

QQ截图20170502180547.png

此where子句中的搜索模式给出了后面跟有文本的两个通配符。结果只显示匹配搜索模式的行:第一行中下环线匹配1,第二行中下划线匹配2.

大家可以再试试用%进行匹配返回的结果,对比一下。

Atas ialah kandungan terperinci mysql中使用通配符进行过滤教程. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn