首页 > 代码库 > Oracle的SQL语句中的变量替换
Oracle的SQL语句中的变量替换
一.问题描述
如下SQL:
INSERT INTO tmp(val)VALUES(‘a&b‘);
执行过程中会出现如下提示:
点击"确定"过后我们查看表中的数据:
b后面的字符串没有插入进去.
二.原因解析--替代变量
SQL*PLUS中默认的"&"表示替代变量,当写入&时,数据库会要求其替换成其它的值。
如,你可以定义:
这样插入数据库中的值就是ahellob.
三.解决方法
解决方法1:关闭变量替换
如下所示:
SET DEFINE OFF; INSERT INTO tmp(val)VALUES(‘a&b‘); COMMIT;
这样插入进去的值就是a&b
解决方法2:使用&符号的ASCII码CHR(38)来处理
字符串拼接,如下所示:
INSERT INTO tmp(val)VALUES(‘a‘||CHR(38)||‘b‘); COMMIT;
字符串翻译,如下所示:
INSERT INTO tmp(val)VALUES(translate(‘aIIIb‘,‘III‘,CHR(38))); COMMIT;
字符串替换,如下所示:
INSERT INTO tmp(val)VALUES(REPLACE(‘aIIIb‘,‘III‘,CHR(38))); COMMIT;
附:ASCII码对照表
百度百科:http://baike.baidu.com/view/15482.htm?fromid=99077
Oracle的SQL语句中的变量替换
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。