ITPub博客

首页 > 数据库 > Oracle > 10-oracle_表达式

10-oracle_表达式

原创 Oracle 作者:blt32034 时间:2019-04-14 10:02:00 0 删除 编辑

1) 关系表达式 >,<,>= 等

在我们做查询语句时,经常会在 where 后面加上关系表达式。返回逻辑为 TRUE 的记录。

select * from t_sales a where a.sales_amt > 5000 ;

所以结果只返回了销售额大于 5000 的记录 3 条

 

2) 逻辑表达式 and,or,not

select *

  from t_sales a

  where a.sales_amt > 5000

   and a.dept_code = 'B' ;

因为 and 是要求 2 个条件都成立,销售额大于 5000 并且部门为 B 的记录,所以只返回了 2 条记录。在上一个查询返回的 3 条记录里,有一条部门信息是 A ,就被过滤掉了。

 

3) 条件表达式 case,decode

CASE 语法:

case 列

  when 列值 1 then   显示值 1

  when 列值 2 then   显示值 2

  when 列值 3 then   显示值 3

else

  默认值

end

 

DECODE 语法:

decode ( 列 , 列值 1, 显示值 1, 列值 2, 显示值 2, 默认值 )

这 2 个语法都能实现条件的转换,不过 case 比 decode 的应用更灵活, decode 只能按列表形式转换,在 decode_col 这列中,列值与显示值只能一一对应关系,不能像 case_col2 列这样,对某一个范围值映射到一个显示值。对于销售额在 5000 以下的我想显示不合格,如果用 decode 来做无法实现,这也是他们 2 个语法的不同点,在应用中我们更喜欢用 case ,一个这是 SQL 的标准语法,其他数据库都支持,另一个是更好的理解性,很容易理解逻辑,还有就是他比 decode 更灵活,能实现 decode 所有功能。

 

4)between

Between 类似于 >= and <= 合在一起的效果,在对于字段是数字、字符、日期等类型时,都是左右全闭区间。

select * from t_sales a where a.sales_amt between 4563 and 6794 ;

select * from t_sales a where a.user_no between '002' and '004' ;

在第一个查询里按数字类型把销售额为 4563 和 6794 的记录返回结果集了,表示一个全闭区间,第二个查询按字符类型把 002 和 004 用户返回了,也表示一个全闭区间。



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31535951/viewspace-2641329/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 11-oracle_索引
请登录后发表评论 登录
全部评论
在快递和物流行业深耕多年,有丰富的行业经验和解决方案。

注册时间:2018-05-07

  • 博文量
    46
  • 访问量
    83782