特殊字符轉義


變量符"&"轉義

  在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;  --'''中第一和第二個'分別是轉義字符和真正內容,第三個'跟最開始的'匹配

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM