SQL学习之高级数据过滤
一、高级数据过滤之IN操作符
IN 操作符用来指定条件范围,范围中的每个条件都可以进行匹配。IN取一组由逗号分隔、括在圆括号中的合法值。代码如下:
select ItemId,ItemName,CheckValueNum,CheckValueString,ResultLevel from T_Check_InfoDetail
现在我们需要检索ItemId值为0002和0004的行记录数据,
(1)第一种写法,通过or操作符
select ItemId,ItemName,CheckValueNum,CheckValueString,ResultLevel from T_Check_InfoDetail where ItemId='0002' or ItemId='0004'
(2)第二种写法,通过IN操作符
select ItemId,ItemName,CheckValueNum,CheckValueString,ResultLevel from T_Check_InfoDetail where ItemId in('0002','0004')
两种结果显示:IN操作符和OR操作符完成了同样的效果,但是使用IN操作符的效果更好!它的优点如下:
第一点:在有很多的合法选项时(就是需要判断的字段有很多的时候),IN操作符的语法更清楚,更直观。
第二点:在与其他AND和OR操作符组合执行IN时,求值顺序更容易管理。
第三点:重要的一点是IN操作符一般比一组OR操作符执行的更快(上面的例子中可能无法察觉,但是一旦查询的数据量大的话,就能看出来)
第四点:超级重要的一点就是IN操作父可以包含其他的select语句,能够更动态的建立WHERE子句。
二、NOT操作符
where子句的NOT操作符有且只有一个功能,那就是否定其后所跟的任何条件。因为NOT从不单独使用(他总是与其他操作符一起使用),所以他的语法与其他操作符有所不同。NOT关键字可以用在要过滤的列前,而不仅实在其后。代码如下:
select ItemId,ItemName,CheckValueNum,CheckValueString,ResultLevel from T_Check_InfoDetail
现在我们需要ResultLevel列值不为-1的所有数据行
第一种写法:"<>代表!="
select ItemId,ItemName,CheckValueNum,CheckValueString,ResultLevel from T_Check_InfoDetail where ResultLevel<>-1 select ItemId,ItemName,CheckValueNum,CheckValueString,ResultLevel from T_Check_InfoDetail where ResultLevel!=-1
第二种写法:
select ItemId,ItemName,CheckValueNum,CheckValueString,ResultLevel from T_Check_InfoDetail where NOT ResultLevel=-1
两种方法的检索结果都一样,但是为什么我们要用NOT?原因如下:
对于上面这种简单的where语句,使用NOT确实没什么优势。但在更复杂的子句中,NOT是非常有用的。例如,在与IN操作符联合使用时,NOT可以非常简单的找出与条件列表不匹配的行。
select ItemId,ItemName,CheckValueNum,CheckValueString,ResultLevel from T_Check_InfoDetail where ResultLevel!=-1
相关文章
- SQL不重复查找数据及把一列多行内容拼成一行
- 第二十五章 SQL函数 CHAR
- 一款SQL自动检查神器,再也不用担心SQL出错了,自动补全、回滚等功能大全
- Cause: java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符
- 大数据学习——面试用sql——累计报表
- 实战案例:Sql client使用sql操作FlinkCDC2Hudi、支持从savepoint恢复hudi作业
- 学习SQL 最佳书籍推荐2022年版
- CRM 常用SQL 脚本
- sql:SQL Server metadata queries
- sql: postgreSQL sql script
- sql题目:如何查找第N高数据、行列互换问题、连续出现N次问题
- ETL学习笔记之三:MS SQL DTS
- sql 声明 将结果select 而混合值
- kali linux 网络渗透测试学习笔记(二)OWASP ZAP工具扫描SQL injection漏洞失败
- sql server该账户当前被锁定,所以用户'sa'登录失败。系统管理员无法将该账户解锁。(Microsoft SQL Server,错误:18486),登录错误18456
- sql server代理服务无法启动(SQL Agent):OpenSQLServerInstanceRegKey:GetRegKeyAccessMask failed (reason: 2).
- sql server监控图解
- Oracle与Sql server 在SQL上的不同
- 【数据库学习】——Python实现mysql数据库SQL文件生成和导入
- SQL学习之数据列去空格函数
- SQL学习之用通配符进行数据过滤
- sql-如何提高SQL查询的效率?
- sql注入学习笔记,什么是sql注入,如何预防sql注入,如何寻找sql注入漏洞,如何注入sql攻击 (原)