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
用户返回了,也表示一个全闭区间。
