Oracle的SQL語句中的變數替換

來源:互聯網
上載者:User

標籤:oracle   contract   插入   rac   efi   ini   方法   ack   images   

一.問題描述

如下SQL:

INSERT INTO tmp(val)VALUES(‘a&b‘);
View Code

執行過程中會出現如下提示:

點擊"確定"過後我們查看錶中的資料:

b後面的字串沒有插入進去.

二.原因解析--替代變數

SQL*PLUS中預設的"&"表示替代變數,當寫入&時,資料庫會要求其替換成其它的值。

如,你可以定義:

這樣插入資料庫中的值就是ahellob.

三.解決方案

解決方案1:關閉變數替換

如下所示:

SET DEFINE OFF;INSERT INTO tmp(val)VALUES(‘a&b‘);COMMIT;
View Code

這樣插入進去的值就是a&b

解決方案2:使用&符號的ASCII碼CHR(38)來處理

字串拼接,如下所示:

INSERT INTO tmp(val)VALUES(‘a‘||CHR(38)||‘b‘);COMMIT;
View Code

字串翻譯,如下所示:

INSERT INTO tmp(val)VALUES(translate(‘aIIIb‘,‘III‘,CHR(38)));COMMIT;
View Code

字串替換,如下所示:

INSERT INTO tmp(val)VALUES(REPLACE(‘aIIIb‘,‘III‘,CHR(38)));COMMIT;
View Code

 

附:ASCII碼對照表

百度百科:http://baike.baidu.com/view/15482.htm?fromid=99077

 

Oracle的SQL語句中的變數替換

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.