注意Oracle Sql中的条件表达式顺序

本文揭示了在编写 Oracle SQL 语句时容易忽视的一个细节:联接条件的顺序可能导致表达式失效。通过两个具体例子说明了当常量位于比较操作符左侧时可能引发的问题,并特别指出这一习惯在日本程序员中较为常见。

在写Oracle Sql语句的时候很容易犯错误的一件事情就是联接其它副表时的联接条件顺序。

例1:

select * from A left join B on A.key1=B.key2 and 2<B.No

where B.Key3>2

你能看出有什么问题吗?

问题在2<B.No上这句将失效,原因是常量在表达式左侧。如果把它改写为B.No>2就没什么问题。

日本软件的人很容易犯这种错误,因为日本人往往要求在程序里写比较表达式的时候都用小于符号<不让用大于符号>。

如下条件表达式也将失效

例2:

select * from A left join

    (select * from C left join

           (select * from E where E.field1=2) D

     on C.key1=D.key1) B

on A.key1=B.key1

where B.Key3>2

E.field1=2将失效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值