2010-11-14 90 views
38

我想在我的INSERT語句來插入特殊字符&。我插的是:如何輸入特殊字符像甲骨文「和」數據庫?

INSERT INTO STUDENT(name, class_id) VALUES ('Samantha', 'Java_22 & Oracle_14'); 

如果我嘗試運行此查詢我得到一個彈出式窗口,它要求我爲Oracle_14輸入值。

我如何可以輸入特殊字符,如在Oracle數據庫插入語句&

+0

您使用哪種工具來執行插入? – SimonJ 2010-11-14 00:25:05

+0

我正在使用SQLDeveloper。 – Rachel 2010-11-14 00:33:50

回答

49

如果你在SQL * Plus或SQL Developer,您希望在執行SQL語句之前運行

SQL> set define off; 

。檢查替代變量的輪流。

SET指令像這樣的客戶端工具的說明(SQL * Plus或SQL開發人員)。他們有會話範圍,所以你會在每次連接時間發出指令(你可以把該指令在客戶端機器的glogin.sql中如果要更改默認有DEFINE設置爲OFF)。不會影響數據庫中的任何其他用戶或會話。

+9

17秒...我是* so *關閉 – 2010-11-14 00:14:06

+0

所以這隻會關閉我的sql或完整的表或完整的數據庫的定義也可以在生產插入腳本中有這樣的東西? – Rachel 2010-11-14 00:14:15

+0

國際海事組織,您的生產代碼應該*使用*替代,或至少,處理它本身。不過,我相信代碼會爲您的登錄會話進行設置。 – 2010-11-14 00:23:16

17

嘗試'Java_22 '||'&'||' Oracle_14'

+0

該解決方案運行良好。 – Rachel 2010-11-14 14:55:04

-3

您可以用反斜槓字符逃脫單個字符或符號

'Java_22 \ & Oracle_14'

或牙套轉義字符的字符串或符號

「{JAV a_22 & Oracle_14}」

+0

你的第一種方法不起作用。 – Rachel 2010-11-14 00:40:01

+0

第二種方法也可以打印支架,第一種方法也可以使用'\&'。 – Rachel 2010-11-14 00:42:54

+2

匿名用戶說:*備註:這最初是在Oracle文檔中指示的,但不適用於像SQL Developer這樣的客戶端。* – Pubby 2011-12-20 02:34:34

9

賈斯汀的答案是要走的路,同時也作爲一個供參考,你可以使用CHR()函數要插入字符的ASCII值。在這個例子中這將是:

INSERT INTO STUDENT(name, class_id) VALUES ('Samantha', 'Java_22 '||chr(38)||' Oracle_14'); 
0

我們可以用另一種方式以及 例如插入特殊字符「Java_22 & Oracle_14」值存入數據庫,我們可以使用下面的格式..

'Java_22'||' &'||' Oracle_14'

儘管它認爲是3種不同的標記,但我們沒有任何選項,因爲oracle文檔中提供的轉義序列的處理是不正確的。

+1

這就是EternalNoob所說的,接近Craig所說的,當問題首次被問到時。 – 2012-08-03 22:35:37

0

如果一個轉義字符開頭或類似"JAVA"結束時添加,然後使用:

INSERT INTO STUDENT(name, class_id) VALUES ('Samantha', ''||chr(34)||'JAVA'||chr(34)||''); 
1

要插入的在它已得到「&」的值。使用以下代碼。

Set define off; 

Begin 

INSERT INTO STUDENT(name, class_id) VALUES ('Samantha', 'Java_22 & Oracle_14'); 

End ; 

並從Oracle或蟾蜍編輯器按F5。

0

對於特殊字符集,您需要檢查UNICODE圖表。選擇你的性格後,您可以使用下面的SQL語句,

SELECT COMPOSE('do' || UNISTR('\0304' || 'TTTT')) FROM dual; 

-

d ō TTTT

0

您也可以使用CONCAT這樣的:d

Insert into Table Value(CONCAT('JAVA ',CONCAT('& ', 'Oracle')); 
-1

在我的情況下,我需要插入一行文字「請撥* 001尋求幫助」。 在這種情況下,特殊字符是星號。

通過使用用sqlplus它失敗,錯誤直接插入「SP2-0734:未知的命令開始......」

我tryed設置逃跑都沒有成功。

來實現的,我創建了文件系統的文件insert.sql與

insert into testtable (testtext) value ('Please dial *001 for help'); 
從SQLPLUS

然後我執行

@insert.sql 

,並插排。

0

有3種方法可以這樣做:

1)根本就SET DEFINE OFF;然後執行插入stmt。

2)簡單地通過在單引號內串聯保留字並連接它。 例如選擇'Java_22'|| '&'|| ':'||來自dual - (:)的'Oracle_14'是可選的。

3)通過使用CHR函數和串聯。 例如選擇'Java_22'||字符(38)||」 Oracle_14'雙

希望這個幫助!

0

strAdd = strAdd.replace(「&」,「'||'&'||'」);

1

你可以簡單地通過一個點逃脫&。試試這個:

INSERT INTO STUDENT(name, class_id) VALUES ('Samantha', 'Java_22 &. Oracle_14');