變量符"&"轉義
在DML中,若操作的字符中有特殊字符"&",則會被oracle視作是輸入變量的標志,此時需要用轉義字符來進行轉義
以下腳本在執行過程中,會導致數據缺失,目標表數據中只包含'遼寧','&大連'會被忽略
insert into tableA values ('遼寧&大連');
&符號是Oracle里面用來識別自定義變量的設置
方法1:在SQL*PLUS下執行以下命令將其關閉,然后再次執行導入腳本,問題搞定
Set define OFF;
注意:如果是在TOAD中執行,建議在每一個要導入的腳本前執行以上命令,否則當導入第二個含有特殊字符的腳本的時候,又會出錯
如果是在SQL*PLUS中執行,則只需要設置一次define OFF,后面就可以連續導入了,直到重新設置define ON為止
方法2:在SQL語句中將'&'替換成chr(38),因為chr(38)是"&"的ASCII碼
select 'Tom' || chr(38) || 'Jerry' from dual;
方法3:分拆原來的字符串
select 'Tom' || '&' || 'Jerry' from dual;
總結:方法1最為簡便,而且效率也最高
方法2因為有一個調用函數的過程,所以性能稍差
方法3需要兩次連接字符串,效率最差
單引號"'"轉義
方法1:使用轉義字符
Select 'test' || '''' from dual; --''''中第一和第四個'的作用是包含字符串,第二個'是轉義字符,第三個'是真正的內容
方法2:使用另一方式的轉義字符
Select 'test''' from dual; --'''中第一和第二個'分別是轉義字符和真正內容,第三個'跟最開始的'匹配