时间:2021-07-01 10:21:17 帮助过:45人阅读
上面语法的含义是:查询user表中的所有字段,其中password这个字段为null的值。
回到顶部三:高级数据过滤
组合where子句
SQL允许给出多个where子句。这些子句有两种使用方式,即以and子句或or子句的方式使用。
1. AND 操作符
如下基本语法:
select * from user where username = ‘cccc‘ and password > 200;
如上语句的含义是:查询user这张表中的所有数据,然后根据 username=‘cccc‘ 和 password 大于200 这个条件进行查询,如下所示:
2. OR 操作符
or操作符和and操作符相反,它匹配的含义是:只要匹配上任意一个条件即可。如下基本语法:
select * from user where username = ‘cccc‘ or password > 200;
如上代码的含义是:查询user这张表,如果这张表username=‘cccc‘ 的话,就会把数据查询出来,或者 说 password > 200 的这种情况下,也会把对应的数据查询出来,如下图所示:
3. in 操作符
in操作符用来指定条件范围,范围中的每个条件都可以进行匹配。in取一组由逗号分隔,括在圆括号中的合法值。
如下基本语法:
select * from user where password in (234, 456, 123);
如上代码的含义是:查询user这张表,并且根据password这个字段中的值是 234, 456, 123 会把所有的数据查询出来,如下所示:
使用in操作符,优点如下:
1. 在有很多合法选项时候,in操作符的语法更清楚,更直观。
2. 在与其他and和or操作符组合使用in时,求值顺序更容易管理。
3. in操作符一般比一组or操作符执行更快。
4. not操作符
该操作符有且只有一个功能,那就是否定其后所跟的任何条件。如下基本语法:
select * from user where not username=‘cccc‘;
如上代码的含义是:查询user这张表,并且username 不等于 cccc 这个值的所有条件。如下所示:
回到顶部四:用通配符进行过滤
1. like操作符
我们前面介绍的所有的都是针对已知值进行过滤的。不管是匹配一个值还是多个值。检索大于还是小于已知值,或者检查某个范围的值,他们的共同点就是过滤中使用的值都是已知的。
但是有时候我们需要进行模糊搜索,比如说我们要搜索字符串中 ‘kongzhi‘ 含有字符 ‘kong‘ 这个字符的所有值。因此我们这里需要使用通配符进行搜索。
1.1 百分号(%) 通配符
该通配符的含义是:%(百分号) 表示任何字符出现任意次数。如下基本语法:
select * from user where username like ‘kong%‘;
如上代码含义是:查询user这张表中的所有数据,并且该表中的username字段值以 字符 ‘kong‘ 开头的所有匹配的值。
如下图所示:
百分号(‘kong%‘) 通配符的含义是:匹配以字符 ‘kong‘ 开头的字符,不管它后面有多少个字符都匹配。
注意:通配符可在搜索模式中的任意位置上使用,并且可以使用多个通配符。比如可以使用两个通配符,它在字符的两端。如下语法:
select * from user where username like ‘%kongzhi%‘;
该代码的含义是匹配user这张表中的字段 username,该字符中包含kongzhi这个字符,不管该字符之前或之后出现什么字符。如下所示:
通配符也可以出现在搜索模式的中间,比如找出以kong开头的字符,以zhi字符结尾的;如下代码:
select * from user where username like ‘kong%zhi‘;
如上代码的含义是:查询user表中的字段以kong字符开头的,以字符zhi结尾的所有匹配到的数据,如下图所示:
1.2 下划线(_) 通配符
下划线 _ 通配符的用途和%通配符一样,但是它只匹配单个字符,而我们上面的百分号(%)可以匹配0个,1个或多个字符。
select * from user where username like ‘kongzhixxx__‘;
如上代码,是匹配user这张表中的username字段中的字符 kongzhixxx 后 跟两个任意字符的字符串。如下图所示:
注意:使用通配符搜索比上面其他的搜索耗费的时间会更多。因此不到万不得已的时候尽量不要使用。
SQL语句检索数据排序及过滤
标签:col 使用 没有 用两个 应用 操作 高级 简单的 就会