Oracle中插入特殊字元 和 的解決方法彙總

2022-09-24 14:18:15 字數 1684 閱讀 6654

今天在匯入一批資料到oracle時,碰到了這樣乙個問題:toad提示要給乙個自定義變數amp賦值,一開始我很納悶,資料是一系列的insert語句,怎麼會有自aujwllbzh定義變數呢?後來搜尋了一下關鍵字amp發現,原來是因為在插入資料中有乙個欄位的內容如下:

oracle把這裡的url的引數連線符&當成是乙個自定義變數了,所以要求我給變數amp賦值。經過測試之後,總結出以下三種方法:

方法一:在要插入的sql語句前加上set define off;與原sql語句一起批量執行

我們在sql*plus下執行 sql> show all命令時,可以發現乙個引數:define "&" (hex 26),**如下所示

......

concat "." (hex 2e)

copycommit 0

copytypecheck on

define "&" (hex 26)

describe depth 1 linenum off indent off

echo off

......

這個是oracle裡面用來識別自定義變數的設定,現在我們在sql*plus下將其關閉:

sql> set define off;

然後再次執行匯入指令碼,ok!問題搞定。

注意:如果是在toad中執行,建議在每乙個要匯入的指令碼第一行加上前面那句關閉define的話,否則當你匯入第二個含有特殊字元的指令碼的時候,又會出錯。

如果是在sql*plus中執行,則只需要設定一www.cppcns.com次define oaujwllbzhff,後面就可以連續匯入了。直到你重新設定define on為止。

插入一條語句:

sql> insert into aa (o,resvalue) values ('aa', 's'||chr(38)||'p');

方法二:在sql語句中將'&'替換成chr(38),因為chr(38)是『&'的ascii碼

程式設計客棧sql> select 'tom' || chr(38) || 'jerry' from dual;

方法三:分拆原來的字串

sql> select 'tom' || '&' || 'jerry' from dual;

我們可以看到,方法一最為簡便,而且效率也最高。方法二因為有乙個呼叫函式的過程,所以效能稍差。方法三需要兩次連線字串www.cppcns.com,效率最差!

那麼如果欄位的內容中包含了單引號要怎麼插入呢?例如:it's fine。這種情況下同樣有三種方法:

方法一:使用轉義字元

sql > select 'test' || '''' from dual;

注意:這裡的''''四個單引號是什麼意思呢?首先第乙個和最後乙個都是oracle中的字串連線符,這個沒有異議。那麼第二個'和第三'又表示什麼意思呢?第二個'是乙個轉義字元

第三個'才是我們真正的內容

方法二:同樣是使用轉義字元,只不過方式不同而已

sql > select 'test ''' from dual;

注意:這裡的第二個,第三個'就是我們上面方法一中提到的轉義符和真正的內容

方法三:在sql中將'替換成chr(39),因為chr(39)是'的ascii碼

sql > select 'it' || chr(39) || 'fine' from dual;

本文標題: oracle中插入特殊字元:&和'的解決方法彙總

本文位址:

oracle插入特殊字元

今天在匯入一批資料到oracle時,碰到了乙個問題 toad提示要給乙個自定義變數target賦值,一開始我很納悶,資料是一系列的insert語句,怎麼會有自定義變數呢?後來搜尋了一下關鍵字target發現,原來是因為在插入資料中有乙個欄位的內容如下 oracle把這裡的url的引數連線符 當成是乙...

Oracle如何插入特殊字元 和

今天在匯入一批資料到oracle時,碰到了乙個問題 toad提示要給乙個自定義變數amp賦值,一開始我很納悶,資料是一系列的insert語句,怎麼會有自定義變數呢?後來搜尋了一下關鍵字amp發現,原來是因為在插入資料中有乙個欄位的內容如下 oracle把這裡的url的引數連線符 當成是乙個自定義變數...

oracle中插入特殊字元要轉義

感謝原作者,此處僅儲存學習!oracle資料有個字段是儲存url的,內容有特殊字元 如果直接想執行查詢或插入操作的話有問題,如下 在plsql裡邊執行 update userinfo set pageurl test.php?page 1 pagesize 10 where id test 這條sq...