【Oracle】sqlplus小技巧

在sql*plus工具中,会有一个buffer(缓存),这个buffer中只能存放一条sql语句(不管这条sql语句多少行),buffer中会存放着我们最近一次执行过的一条sql语句。

L或者l //大写或小写都可以list,显示buffer中存放的sql语句
/ //这一命令可以执行buffer中的sql语句
2 //选择buffer中的第二行
a //在buffer中的sql语句的某一行(选择的那一行)后面增加内容,a后面跟的内容
i //在buffer中的sql语句中的某一行(选择的那一行)下面插入一行,i后面跟的内容
del //删除某一行(选择的那一行)
c/ma/me //将某一行(选择的那一行)中的ma替换成me
2 新代码 //将buffer中第2行中的代码全部重写为新代码
save LL.sql //将buffer中的额内容保存到文件LL.sql中,文件在登录sql前的路径存放。
clear buffer //清空缓冲区
start LL.sql //执行文件LL.sql中保存的命令。
@LL.sql //执行文件LL.sql中保存的命令。
edit LL.sql //修改LL.sql文件,使用系统中默认的编辑器打开
get LL.sql //显示LL.sql文件中存储的命令。

spool spool.sql //将接下来的操作记录在spool.sql文件中直到spool off
spool off //记录结束

如下操作

SQL> select * from dual
  2  where 1=1
  3  ;

D
-
X
SQL> l
  1  select * from dual
  2  where 1=1
  3*
SQL> 2 where null = 1
SQL> l
  1  select * from dual
  2  where null = 1
  3*
SQL> /

未选定行

SQL>
     2 where null = null
SQL> /

未选定行

顺便一提的是null 同任何数值计算结果既不是true,也不是false。(参考[1])

如果表中的字段有可能为空,可以使用“decode(column, :bind_variable, 1) = 1”或者
“where (column = :bind_variable or ( column is null and :bind_variable is null)”。这两种写法等价,都可以使用。不过decode()更简洁一些。

SQL>  select * from dual
  2   where decode(null, null,1) = 1
  3  /

D
-
X

此外,我又做了如下测试

SQL> select decode(null,null,1) from dual;

DECODE(NULL,NULL,1)
-------------------
                  1
SQL> select decode(null,2,1) from dual;

DECODE(NULL,2,1)
----------------
SQL> select  *  from dual;

D
-
X
SQL> select  *  from dual where decode(null,2,1)=1;

未选定行
SQL> select decode(null,2,1,0) from dual;

DECODE(NULL,2,1,0)
------------------
                 0

参考资料
(1)Oracle_Database_9i10g11g编程艺术深入数据库体系结构第2版181页,锁定问题,6.2.2悲观锁定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值