目录
高级过滤
组合where子句,即以and、or子句结合使用
And
Select 列名1,列名2...
From 表名
where 列名1=’条件’ and 列名2=’条件’...;--可继续添加order by字段对输出结果进行排序
Or
与and类似,只是or只要满足其中任意条件即可
求值顺序
优先级--()>and>or,可将and和or结合进行过滤
In
其功能与or一致,用来指定条件范围,范围中每个条件可以进行匹配,取一组用逗号分隔、括在圆括号中的合法值。如:where 列名 in (‘条件1’,’条件2’)
in较or的优点
1.in更清楚、更直观
2.在与and、or操作符组合使用In时,求值顺序更易管理
3.In一般比or执行更快
4.in可包含其他select语句,更好地动态建立where子句
Not
否定其后所跟的任何条件,不单独进行使用,与其他操作符联合使用。其既可以在过滤列之前,也可以在过滤列之后。如:where not 列名=’条件’/where <>列名=’条件’
用通配符进行过滤
前面所学的操作符是针对已知值进行过滤,而对于文本字段的过滤通配符可以创建比较特定数据的搜索模式。且必须使用操作符like搭配使用
百分比%
其表示任何字符出现任意次数
Select 列名1,列名2...
From 表名
where 列名1 like ’条件%’ ;
注意
1.%告诉我们DBMS接受条件之后的任意字符,不管它有多少字符。
2.根据DBMS的不同及配置,搜索可以区分大小写
3.通配符的可在搜索模式中的任意位置使用,并可以使用多个通配符。如:%条件%表示匹配任何位置上包含条件的值
4.若将%放条件中间,对于搜索电子邮件地址十分有用
5.请注意空格,如’F%y’只匹配以F开头,以y结尾的字段,若值后面是以空格结尾(Fish toy ),则不能识别出来。解决办法有:再添加’F%y%’;利用函数去掉空格
6.%不会匹配null,r如:where 列名1 like ’%’ ;不会匹配名称为null的行
下划线_
其用途与%一样,但它只匹配单个字符,而不是多个字符。如:where 列名 like ‘_ inch’;结果将会返回8 inch,而不会返回12 inch
方括号[]
用来指定一个字符集,必须匹配特定位置的一个字符。如:查找出以J或M开头的联系人
Select cust_contanct
From customs
Where cust_contact like ‘[JM]%’;
注意
1.[JM]可匹配其中任意一个字符,即有且只能匹配单个字符
2.若使用[^JM]%,则返回除了JM以外所有的结果
通配符使用代价
1.不要过度使用通配符,消耗更多的处理时间
2.若要使用通配符,则不要将其置于搜索模式的开始处,降低搜索速度
3.注意通配符的位置,若放错地方,将会返回不需要的结果