Oracle的SQL語句中的變數替換

2022-02-10 09:40:42 字數 1359 閱讀 2009

一.問題描述

如下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碼對照表

偶遇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 這也是只掃...