SQL 包你会------必须学会高级过滤

5.高级数据过滤
组合where子句可以建立功能更强,更高级的搜索条件。
通过使用and子句和or子句可以给出多个where子句。

逻辑操作符
用来联结或改变where中的子句的关键字称为逻辑操作符。
逻辑操作符包括and操作符,in操作符,和not操作符。

and操作符
要通过不止一个的列对数据进行过滤,可以使用and操作符给where子句附加条件。
and指示dms只返回满足给定条件的所有行。
可以增加多个过滤条件,每个条件都要使用and关键字。


or操作符
or操作符指示dbms检索匹配任一给定条件的行。
第一个条件满足时,不管第二个条件是否满足,相应的行都会被检索出来。


求值顺序
where子句可以包含任意数目的and和or操作符。
在处理Or操作符之前,优先处理and操作符:
例如:
SELECT prod_name, prod_p
FROM Products 
WHERE vend_id = 'DLL01' 
OR vend_id = ‘BRS01
AND prod_price >= 10;
实际的执行顺序是:
SELECT prod_name, prod_p
FROM Products 
WHERE vend_id = 'DLL01' 
AND prod_price >= 10
OR vend_id = ‘BRS01
求值顺序的解决方法是使用圆括号对进行明确的分组。
圆括好具有比and操作符和or操作符更高的求值顺序。
任何使用同时含有and和or操作符的where子句时,都应该使用圆括号进行操作符明确的分组。


in操作符
in操作符用来指定条件范围,范围中的每个条件都可以进行匹配。
in取一组由逗号分隔,括在圆括号中的合法值。
in操作符完成与or操作符相同的功能。
当有很多合法条件时,in操作符的语法更直观,更清楚。
in最大的有点是可以包含select语句。
in是用来指定匹配值清单的一个关键字。

not操作符
not有且只有一个功能,否定其后所跟的任何条件。
not从不单独使用。
not与in联合使用时,可以非常简单的找出与条件列表不匹配的行。


6用通配符进行过滤

like操作符
利用通配符可以创建比较特定数据的搜索模式。
通配符是用来匹配值的一部分的特殊字符。
搜索模式是由字面值,通配符或者组合构成的搜索条件。
在搜索子句中使用通配符,必须使用like操作符。
like指示dbms,后跟的搜索模式利用通配符匹配而不是相等匹配进行比较。
通配符搜索只能用于文本字段,非文本数据类型字段不能使用通配符搜索。


百分号%统配符
在搜索串中,%表示任何字符出现任意次数。
例如,Fish%,表示Fish开头的任何字符串
%告诉DBMS接受前面的字符串之后的任意字符,不管有多少。
通配符可以在搜索模式中的任意位置使用,并且可以是使用多个通配符。
例如,%bean%,表示匹配任何位置上包含文本bean的值,不管它之前和之后出现什么字符,甚至出现字符。
根据邮件地址的一部分来查找电子邮件时,通配符可以发放在中间,
例如:WHERE email LIKE b%@forta.com
除了能匹配一个后多个字符外,%还能匹配0个字符。
%代表搜索模式中给定位置的0个,1个或多个字符。
如果值后面跟空格,最简单解决办法是给搜索模式再增加一个%号,更好的解决办法是用函数去掉空格。
liKe % 不会匹配为Null的行。


下划线_通配符
_的用途和%一样,区别是只匹配单个字符,而不是多个字符。
与%能匹配0个字符不同,_总是刚好匹配一个字符,不能多也不能少。


方括号[]通配符
方括号统配符通常指定一个字符集,但他只能匹配指定位置的一个字符。
例如[jm]匹配任何在方括号中字母的一个字符。
通配符可以用前缀字符^(叫脱字符)来否定。
例如[^jm]%表示匹配不是以j或m开头的任意字符串。


使用通配符的技巧

统配符搜索比非统配符的搜索会耗费更长的处理时间。
在确实需要使用通配符时,尽量不要再他妈呢用在搜索模式的开始处。
把通配符置于开始处,搜索起来是最慢的。

猜你喜欢

转载自blog.csdn.net/weixin_42204641/article/details/85171870