码迷,mamicode.com
首页 > 数据库 > 详细

Oracle的SQL语句中的变量替换

时间:2016-11-28 14:38:59      阅读:287      评论:0      收藏:0      [点我收藏+]

标签: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语句中的变量替换

标签:oracle   contract   插入   rac   efi   ini   方法   ack   images   

原文地址:http://www.cnblogs.com/gudi/p/6109210.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!