首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle & 號在 INSERT 中的處理:PL/SQL 用 &&、SQL Developer 用 CHR(38)

     編輯:Oracle 資料庫相關知識

在 Oracle 中插入含 & 字元的字串時,若未關閉替換變數功能,會被視為變數提示導致失敗或錯誤資料。本文針對兩大常用工具給出最簡單解法。

問題重現

INSERT INTO t (col) VALUES ('A&B');  -- 若 SET DEFINE ON,會提示輸入 B 變數值

工具別解法

1. PL/SQL Developer / SQL*Plus / SQLcl

使用雙 && 定義「永久替換變數」,首次執行會提示輸入,之後同 Session 直接使用該值。若不想提示,先關閉替換:

SET DEFINE OFF
INSERT INTO t (col) VALUES ('A&B');
SET DEFINE ON

或在字串中寫 'A&&B'(若已定義變數 B 則代入,否則提示)。

2. SQL Developer

不支援 SET DEFINE,最穩妥用 CHR(38) 串聯:

INSERT INTO t (col) VALUES ('A' || CHR(38) || 'B');
-- CHR(38) = '&'

適用於任何工具、任何語境(PL/SQL 區塊、匯入腳本、動態 SQL)。

通用最佳實踐

  1. 腳本檔開頭加 SET DEFINE OFF(SQL*Plus 相容工具)。
  2. 程式碼中統一使用 CHR(38) 或 '&' ESCAPE 明確表達字面 &。
  3. 使用參數化綁定(:b1)完全避免字串拼接問題。

補充:其他特殊字元 ASCII 對照

字元ASCIICHR()
&38CHR(38)
'39CHR(39) 或 '' (雙單引號)
%37CHR(37)
_95CHR(95)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved