q quote 轉義限定符的用法

2021-08-17 07:04:56 字數 2846 閱讀 9956

一句話概括 

1.oracle10g 之後可以使用q'限定符***'***x限定符' 方式代替轉義符號功能

2.限定可以是任一單位元組符號,括號,字母數字都可以,但開始限定符必須與結束限定符一致,除了3中4中特例

3.開始是4種特殊限定符[,,>,)---解釋如果使用]為開始限定符,那結束限定符也必須是]

在oracle中,字串的字面量如果含有單引號,那麼必須轉義,而且轉義符是單引號',這樣加上表示字串字面量的外層'',那麼勢必要寫很多單引號,不僅可讀性降低,而且容易出錯。當然,使用chr(39),也可以代替引號,可能比寫多個單引號更好,可讀性強,但是畢竟這種寫法不是很常見。so,在10g中,oracle引入了q-quote的用法。

常規字元字面量內單引號的使用:

dingjun123@oradb> select ''' str from dual;

error:

ora-01756: 引號內的字串沒有正確結束

--要使用轉義,兩個單引號表示乙個單引號

dingjun123@oradb> select '''' str from dual;s-

'dingjun123@oradb> select '''a''' str from dual;

str---

'a'

另外可以使用chr(39)作為引號來拼湊,比較簡潔

。dingjun123@oradb> select 'it'||chr(39)||' a cat' str from dual;

str---------

it' a cat

雖然使用chr(39),但是看起來還是很麻煩,所以10g引入了q-quote特性。

允許按照指定規則也就是q或q開頭(如果是national character literals,那就是n或n放在q或q之前)

,然後'界定符號

原始字面量

界定符號

',使用規則很簡單:

1) q-quote界定符可以是除了tab,空格,回車外的任何單位元組或多位元組字元。

2) 除了單位元組的的開始界定符是[,,>,)  其他開始界定符與結束界定符必須一致

如:--4個特殊單位元組開始界定符是

[,,>,)

dingjun123@oradb> select q'[a'bc]' str from dual;

str----

a'bc

dingjun123@oradb> select q'' str from dual;

str----

a'bc

dingjun123@oradb> select q'' str from dual;

str----

a'bc

dingjun123@oradb> select q'(a'bc)' str from dual;

str----

a'bc

--因為【開始界定付是多位元組,所以必須一致,特殊的就4個單位元組界定符

dingjun123@oradb> select q'【a'bc[' from dual;

error:

ora-01756: 引號內的字串沒有正確結束

dingjun123@oradb> select q'【a'bc【' from dual;

q'【----

a'bc

--因為]不是4個特殊界定符的開始界定符

dingjun123@oradb> select q']a'bc[' from dual;

error:

ora-01756: 引號內的字串沒有正確結束

dingjun123@oradb> select q']a'bc]' from dual;

q']a

----

a'bc

--其他非特殊的4個開始界定符的要求開始與結束

一致--a是界定符

dingjun123@oradb> select q'ab'cda' str from dual;

str----

b'cd

--a是界定符,但是結束的是a,不一致

dingjun123@oradb> select q'ab'cda' str from dual;

error:

ora-01756: 引號內的字串沒有正確結束

dingjun123@oradb> select q'ab'cda' str from dual;

str----

b'cd

--+號是界定符

dingjun123@oradb> select q'+b'cd+' str from dual;

str----

b'cd

--單引號是界定符

dingjun123@oradb> select q''ab'c'' from dual;

q''a

----

ab'c

--national character literals

dingjun123@oradb> select nq'' str from dual;

str----------

a'b'c

dingjun123@oradb> select nq'' str from dual;

str----------

a'b'c

dingjun123@oradb> select nq'' str from dual;

str----------

a'b'c

dingjun123@oradb> select nq'' str from dual;

str----------

a'b'c

一般使用的時候,都是使用4個特殊字元作為界定符,這樣前後界定符包含了原生態字串,可讀性更好。

格式限定符中的轉義

格式限定符中往往有一些字母代表特點的意思 比如,在datetime.tostring中,y 年,m代表月,等等 那麼如果tostring的結果我本身就需要這些字元又怎麼辦呢?此時就需要使用轉義字元,而且這個轉義標記就是我們熟悉的 datetime now datetime.now now.tostr...

const限定符用法整理

1 const的來由 定義一種變數,我們希望防止程式不小心改變變數的值。因此產生了const限定符。2 初始化 由於const物件一旦建立就不可以改變,所以const物件必須進行初始化 只能在const型別的物件上執行不改變內容的操作,其中一種就是初始化。也就是說,即使拿乙個const物件去初始化另...

引用限定符

通常,我們在乙個物件上呼叫成員函式,而不管該物件是乙個左值還是乙個右值。例如 string s1 a value s2 another auto n s1 s2 find a 此例中,我們在乙個string右值上呼叫find成員,該string右值是通過連線兩個 string 而得到的。有時,右值的...