【Oracle】sqlplus小技巧

前端之家收集整理的这篇文章主要介绍了【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) ----------------
sql> select  *  from dual;

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

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

DECODE(NULL,0) ------------------
 0

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

原文链接:https://www.f2er.com/oracle/212887.html

猜你在找的Oracle相关文章