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