一、发现问题
几个问题:
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
'N'
---
N
eg:转义
SQL> SELECT '''N''' from dual;
'''N'''
-------
'N'
'''N'''
-------
'N'
如果第二个单引号后面紧跟着单引号,此时第二个单引号充当转义;同理,第四个单引号后面又紧跟着单引号,此时第四个单引号充当转义。
另外
SQL> SELECT ' '' ' FROM DUAL;
''''
------
'
SQL> SELECT '' '' FROM DUAL;
SELECT '' '' FROM DUAL
*
ERROR 位于第 1 行:
ORA-00923: 未找到预期 FROM 关键字
SQL> SELECT ' '' ' FROM DUAL;
''''
------
'
SQL> SELECT '' '' FROM DUAL;
SELECT '' '' FROM DUAL
*
ERROR 位于第 1 行:
ORA-00923: 未找到预期 FROM 关键字
转义是密集的,如果单引号出现在转义的位置上,而该单引号后面紧跟的不是单引号,这个时候单引号就不在充当转义的角色。
2.
&把a_b转移成变量。。。