Oracle如何插入特殊字元 和

2021-06-25 17:09:09 字數 1506 閱讀 4073

今天在匯入一批資料到oracle時,碰到了乙個問題:toad提示要給乙個自定義變數amp賦值,一開始我很納悶,資料是一系列的insert語句,怎麼會有自定義變數呢?後來搜尋了一下關鍵字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中執行,則只需要設定一次define off,後面就可以連續匯入了。直到你重新設定define on為止。

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

sql> select 'tom' || chr(38) || 'jerry' from dual;

·方法三:分拆原來的字串

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

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

那麼如果欄位的內容中包含了單引號要怎麼插入呢?例如: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時,碰到了乙個問題 toad提示要給乙個自定義變數target賦值,一開始我很納悶,資料是一系列的insert語句,怎麼會有自定義變數呢?後來搜尋了一下關鍵字target發現,原來是因為在插入資料中有乙個欄位的內容如下 oracle把這裡的url的引數連線符 當成是乙...

如何插入特殊字元

如何插入特殊字元 如何插入特殊字元?寫sq 語句 其中要插入如 等特殊字元,應該怎麼做?sql select ascii from dual ascii 38insert into values chr 38 chr 函式 學然後知不足 體現在以下句子中,應該如何寫?insert into tabl...

oracle插入特殊字元 問題

在初始化資料庫資料時,遇到了插入特殊字元的問題,例如有一選單表 id,name,url。插入資料 insert into menu values 1 產品型別 producttype.do?method list type 01 由於有特殊字元 故toad報錯 提示請輸入typepcode 原因是 ...