一.問題描述
如下sql:
insertview codeinto tmp(val)values('
a&b');
點選"確定"過後我們檢視表中的資料:
b後面的字串沒有插入進去.
二.原因解析--替代變數
sql*plus中預設的"&"表示替代變數,當寫入&時,資料庫會要求其替換成其它的值。
如,你可以定義:
這樣插入資料庫中的值就是ahellob.
三.解決方法
解決方法1:關閉變數替換
如下所示:
set define offview code;insert
into tmp(val)values('
a&b'
);commit;
這樣插入進去的值就是a&b
解決方法2:使用&符號的ascii碼chr(38)來處理
字串拼接,如下所示:
insertview codeinto tmp(val)values('a'
||chr(38)||'b
');commit;
字串翻譯,如下所示:
insertview codeinto tmp(val)values(translate('
aiiib
','iii
',chr(38
)));
commit;
字串替換,如下所示:
insertview codeinto tmp(val)values(replace('
aiiib
','iii
',chr(38
)));
commit;
附:ascii碼對照表
偶遇Oracle中SQL語句中的
之前居然從來沒見到過此類寫法,諸如 select from t spolicy d,v policyemployee g where d.policyno g.policyno 查閱相關資料才發現此法就是外聯的另外一種表現形式其等同於 select from t spolicy d left joi...
Sql語句中的DDL語句
資料庫模式定義語言ddl data definition language 是用於描述資料庫中要儲存的現實世界實體的語言。主要由create 新增 alter 修改 drop 刪除 和 truncate 刪除 四個關鍵字完成。create database 資料庫名 建立乙個資料庫 create d...
sql語句中的count
不考慮null的情況,如果null參與聚集運算,則除count 之外其它聚集函式都忽略null.count 1 和count 主鍵 這兩個只掃瞄主鍵index就可以得到資料,count 是掃瞄表的。所以count 1 和count 主鍵 這兩個效率高。還有一種寫法是count rowid 這也是只掃...