1. 程式人生 > >Oracle 多個單引號的處理

Oracle 多個單引號的處理

一、發現問題

幾個問題:

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轉移成變數。。。