Oracle 多个单引号的处理

来源:互联网 发布:快图浏览 知乎 编辑:程序博客网 时间:2024/04/28 22:59

一、发现问题

几个问题:

SELECT 'N' from dual;
SELECT '''N''' from dual;

SELECT '&a_b' from dual;SELECT '''12&2''' from dual;

二、分析问题

1.在ORACLE中,单引号有两个作用,一是字符串是由单引号引用,二是转义。单引号的使用是“就近原则”
eg:单引号引用
SQL> SELECT 'N' from dual;
'N'
---
N
eg:转义
SQL> SELECT '''N''' from dual;
'''N'''
-------
'N'
如果第二个单引号后面紧跟着单引号,此时第二个单引号充当转义;同理,第四个单引号后面又紧跟着单引号,此时第四个单引号充当转义。
另外 
SQL> SELECT ' '' ' FROM DUAL;
 
''''
------
'
 
SQL> SELECT '' '' FROM DUAL;
SELECT '' '' FROM DUAL
          *
ERROR 位于第 1 行:
ORA-00923: 未找到预期 FROM 关键字

转义是密集的,如果单引号出现在转义的位置上,而该单引号后面紧跟的不是单引号,这个时候单引号就不在充当转义的角色。

2.

&把a_b转移成变量。。。