Oracle的SQL语句中的变量替换

Posted 西门吹牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle的SQL语句中的变量替换相关的知识,希望对你有一定的参考价值。

一.问题描述

如下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 sql语句中的替换问题

oracle sql语句中,有没有能够将结果集中数字替换成汉字的函数?

使用 Oracle 替换变量进行查询

Oracle中特殊字符&和'的处理方案

Oracle sql语句把字段中的某个字符去掉

Oracle PL SQL 中的 ACCEPT 语句