关闭

【Oracle】sqlplus小技巧

标签: oracle
148人阅读 评论(0) 收藏 举报
分类:

在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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:35714次
    • 积分:661
    • 等级:
    • 排名:千里之外
    • 原创:30篇
    • 转载:4篇
    • 译文:0篇
    • 评论:3条
    文章分类
    最新评论