如單引號(''或')與符號(&)等
1.單引號:select '''' from aa01 結果為'
select '''''' from aa01 結果為''
select ''''||'xx'||'''' from aa01 結果為'xx'
如果直接查詢select ''' from aa01 會報錯
同樣也可以用chr(39)函數將39ASCII碼轉換為對應的字符,即select chr(39)||'xx'||chr(39) from aa01
2.與符號:select '&&x=' from aa01 結果為&x=
如果直接使用select '&x=' from aa01 則會報錯
同樣也可以使用chr(38)轉換,即select chr(38)||'x=' from aa01
針對'&'同樣網上也提出這種解決方法:
在SQL*PLUS默認環境里會把'&字符'當成變量來處理. 有些時候我們也需要在SQL>的符號下輸入'&字符', 只需要改變SQL*PLUS下一個環境變量define即可. SQL> set define off;是把默認的&綁定變量的功能取消, 可以把'&字符'當成普通字符處理 SQL> set define on;打開&綁定變量的功能, &后面的字符串當變量使用. SQL> show define;查看當前SQL*PLUS的define狀態 舉例說明: --------------------------------------------------------------- SQL> CREATE TABLE TEST3 ( ID NUMBER (2) PRIMARY KEY, NAME VARCHAR2 (20)); SQL> show define; define "&" (hex 26) SQL> insert into test3 values(1,'sgs&a&n'); Enter value for a: abc Enter value for n: 456 old 1: insert into test3 values(1,'sgs&a&n') new 1: insert into test3 values(1,'sgsabc456') 1 row created. SQL> commit; Commit complete. SQL> set define off; SQL> insert into test3 values(2,'sgs&a&n'); 1 row created. SQL> commit; Commit complete. SQL> select * from test3; ID NAME -- -------------------- 1 sgsabc456 2 sgs&a&n
但是針對以上網辦法也有人提出異議如下:
SQL> truncate table demo;
Table truncated.
SQL> select * from demo;
no rows selected
SQL> desc demo;
Name Null? Type
----------------------------------------- -------- ----------------------
X CHAR(20)
SQL> insert into demo values ('scott&'||'tiger');
1 row created.
SQL> select * from demo;
X
--------------------
scott&tiger
SQL>