Oracle中插入特殊字符:&和'的解决方法汇总_oracle

今天在导入一批数据到Oracle时,碰到了这样一个问题:Toad提示要给一个自定义变量AMP赋值,一开始我很纳闷,数据是一系列的Insert语句,怎么会有自定义变量呢?后来搜索了一下关键字AMP发现,原来是因为在插入数据中有一个字段的内容如下:

http://xxx.com/3DX?uid=0676&sid=rt_060908

Oracle把这里的URL的参数连接符&当成是一个自定义变量了,所以要求我给变量AMP赋值。经过测试之后,总结出以下三种方法:

方法一:在要插入的SQL语句前加上Set define off;与原SQL语句一起批量执行

我们在SQL*PLUS下执行 SQL> show all命令时,可以发现一个参数:define "&" (hex 26),代码如下所示

......
concat "." (hex 2e)
copycommit 0
copytypecheck ON
define "&" (hex 26)
describe DEPTH 1 LINENUM OFF INDENT OFF
echo OFF
......

这个是Oracle里面用来识别自定义变量的设置,现在我们在SQL*PLUS下将其关闭:

SQL> Set define OFF;

然后再次执行导入脚本,OK!问题搞定。

注意:如果是在TOAD中执行,建议在每一个要导入的脚本第一行加上前面那句关闭define的话,否则当你导入第二个含有特殊字符的脚本的时候,又会出错。
如果是在SQL*PLUS中执行,则只需要设置一次define OFF,后面就可以连续导入了。直到你重新设置define ON为止。

插入一条语句:

SQL> insert into AA (O,resvalue) values ('AA', 'S'||chr(38)||'P');

方法二:在SQL语句中将'&'替换成chr(38),因为chr(38)是‘&'的ASCII码

SQL> Select 'Tom' || chr(38) || 'Jerry' from dual;

方法三:分拆原来的字符串

SQL> Select 'Tom' || '&' || 'Jerry' from dual;

我们可以看到,方法一最为简便,而且效率也最高。方法二因为有一个调用函数的过程,所以性能稍差。方法三需要两次连接字符串,效率最差!

那么如果字段的内容中包含了单引号要怎么插入呢?例如:It's fine。这种情况下同样有三种方法:

方法一:使用转义字符

SQL > Select 'test' || '''' from dual;

注意:这里的''''四个单引号是什么意思呢?首先第一个和最后一个都是Oracle中的字符串连接符,这个没有异议。那么第二个'和第三'又表示什么意思呢?第二个'是一个转义字符
第三个'才是我们真正的内容

方法二:同样是使用转义字符,只不过方式不同而已

SQL > Select 'test ''' from dual;

注意:这里的第二个,第三个'就是我们上面方法一中提到的转义符和真正的内容

方法三:在SQL中将'替换成chr(39),因为chr(39)是'的ASCII码

SQL > Select 'It' || chr(39) || 'fine' from dual;

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索oracle
, 方法
, 特殊字符
插入
,以便于您获取更多的相关知识。

时间: 2024-09-19 09:37:20

Oracle中插入特殊字符:&和'的解决方法汇总_oracle的相关文章

Oracle数据库TNS常见错误的解决方法汇总_oracle

TNS是Oracle Net的一部分,是专门用来管理和配置Oracle数据库和客户端连接的一个工具,在大多数情况下客户端和数据库要通讯,就必须配置TNS.本文主要讲述了Oracle数据库TNS常见错误的解决方法如下: 1.ORA-12541:TNS:没有监听器 原因:没有启动监听器或者监听器损坏.若是前者,使用命令net start OracleOraHome10gTNSListener(名字可能有出入)即可;如果是后者,则使用"Net Configuration Assistant"

php中出现空白页的原因及解决方法汇总_php技巧

很多程序员在进行php开发的时候都遇到过出现空白页的请,综合分析来说,在php编程中出现空白页面可能是由以下几个原因造成的: 1.逻辑错误 逻辑错误是最难排除的,从表面上看,也许代码是合法的,是正规的,可运行起来却不是预料之中的.为什么呢?也许是编写者想得不够全面,毕竟人是人,计算机是计算机,计算机不可能完全按照人的思路去运行脚本.在这里,我告诉大家一个比较好的调试方法,就是使用注释符"/* */",注释掉一些代码,观察运行情况,以此来逐个排除错误,最终找到错误代码的位置.这种情况下要

Oracle 11gR2 用exp无法导出空表解决方法

Oracle 11gR2 用exp无法导出空表解决方法        在11gR2中有个新特性,当表无数据时,不分配segment以节省空间,Oracle 当然在执行export导出时,空表则无法导出,但是还是有解决办法的: 解决方法:一.insert一行,再rollback就产生segment了.该方法是在在空表中插入数据,再删除,则产生segment.导出时则可导出空表. 二.设置deferred_segment_creation参数  该参数值默认是TRUE,当改为FALSE时,无无是空表

Win7系统插入U盘无法识别的解决方法

  Win7系统插入U盘无法识别的解决方法           1.点击"开始"--"运行",中输入"regedit"字符命令后,点击"确定"键. 2.在打开的"注册表编辑器"窗口左侧窗口依次展开以下注册项: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass{4D36E967-E325-11CE-BFC1-08002BE10318}; 3.鼠标右键并

win7系统插入USB鼠标识别缓慢的解决方法

win7系统插入USB鼠标识别缓慢的解决方法 或许你也有这样的经历,新装了win7系统 第一次插入鼠标的时候系统识别了几分钟鼠标才能用,这是无法忍受的, 有时插入U盘,读卡器等USB设备也是识别非常慢,这是什么原因引起的呢?小编这就带大家解决. 这个问题是由于win7旗舰版系统默认先从微软服务器获取驱动引起的,其实win7系统内已经含有驱动了,在接入设备的时候系统还是去服务器搜索最新的USB驱动,在网络卡的时候就更加了,非常缓慢,那么我们怎么设置关闭从互联网搜索驱动呢? 操作方法: 1.右击"计

Java Web开发项目中中文乱码解决方法汇总_java

Java Web项目中,解决中文乱码方法总结如下 第一种情况:调用jsp页面中文显示乱码问题描述:通过浏览器调用jsp页面,在浏览器中显示的中文内容出现乱码. 解决方法:首先确认本jsp在编辑器中保存文件内容时,使用的是utf-8的编码格式,然后在jsp页面的开始处添加<%@ pageEncoding="utf-8"%>就可以解决这种中文乱码问题 第二种情况:调用servlet页面显示乱码问题描述:通过浏览器调用servlet,servlet在浏览器中显示的内容出现乱码.

java中double类型运算结果异常的解决方法_java

问题: 对两个double类型的值进行运算,有时会出现结果值异常的问题.比如: System.out.println(19.99+20); System.out.println(1.0-0.66); System.out.println(0.033*100); System.out.println(12.3/100); 输出: 39.989999999999995 0.33999999999999997 3.3000000000000003 0.12300000000000001 解决方法: J

电脑插入USB设备没反应的解决方法

电脑插入USB设备没反应的解决方法 1.右击我的电脑,选择属性; 2.点击左上角的设备管理器; 3.展开通用串行总线控制器; 4.双击USB Root Hub; 5.打开属性对话框后,切换到电源管理,勾选"允许计算机关闭此设备以节约电源",并点击确定即可.

wps文字中的字体无法继续放大的解决方法

  有时为了打印和设计的方便,我们需要将wps文字中的字体进行放大多倍,但wps文字默认最大只有七十二磅,之后就不能放大了,那么如果你需要更大的字体,该怎么进一步对字体进行放大呢?下面小编就为大家介绍wps文字中的字体无法继续放大的解决方法介绍,希望能对大家有所帮助! 方法/步骤 1.打开你的wps软件,选中你要放大的字体.然后打开开始菜单,在字体后面找到"增大字号"功能. 2.然后,反复的点击"增大字号",几次之后,选中的汉字字体就会变得很大,直到满足你的要求.