首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle INSERT 插入轉義字符 (& 與單引號) 完整解法

     編輯:Oracle 資料庫基礎

問題現場

批量導入含 URL 的 INSERT 腳本,TOAD 提示「需為變量 AMP 賦值」—— Oracle 將 URL 參數連接符 & 識別為替換變量前綴。

處理 & 符號三大法

方法代碼示例優缺點
1. 關閉替換變量 (推薦)
SET DEFINE OFF;
-- 後接 INSERT 腳本
最簡便、效率最高。SQL*Plus 設置一次永久生效;TOAD 建議每個腳本首行加此句
2. 用 CHR(38) 替換
SELECT 'Tom' || CHR(38) || 'Jerry' FROM DUAL;
涉及函數調用,性能稍差
3. 字符串拆分拼接
SELECT 'Tom' || '&' || 'Jerry' FROM DUAL;
需兩次拼接,效率最低

原理:SHOW ALL 可見 DEFINE "&" (hex 26),關閉後 Oracle 不再解析 & 為變量。

處理單引號 三大法

例:插入 It's fine

方法代碼解析
1. 雙單引號轉義 (標準 SQL)
SELECT 'test' || '''' FROM DUAL;
-- 或
SELECT 'test ''' FROM DUAL;
連續四個單引號:外層兩個為字符串界定,中間兩個代表一個實際單引號 (第一個轉義第二個)
2. CHR(39) 替換
SELECT 'It' || CHR(39) || 'fine' FROM DUAL;
ASCII 碼法,通用但可讀性稍差

最佳實踐建議

  • 批量腳本首行加 SET DEFINE OFF,一勞永逸解決 & 問題
  • 單引號統一用標準雙引號轉義 (''),可讀性最好且為 ANSI SQL 標準
  • 動態構建 SQL 時,優先使用綁定變量,從根源避免轉義問題
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved