当前位置: 首页 > 编程笔记 >

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

梅庆
2023-03-14
本文向大家介绍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;
 类似资料:
  • 代码段 很简单-分配字符串,然后将字符串分配给单元格。 我想做的是告诉“狐狸”这个词,他很大胆。这能做到吗?有特殊的字符序列吗?例如^B,有人知道在哪里可以找到完整的列表吗?文本显然可以是任何东西。。。 谢谢并问候塞恩

  • 问题内容: 我想在单词中插入“ at”一词,以便日期看起来像: 2010年5月26日,星期三,上​​午11:17 我可以使它看起来像没有 2010年5月26日,星期三,上​​午11:17 通过使用 如何插入“ at”一词? 问题答案: 您可以使用单引号将文字转义。 这将在2010年5月26日星期三上午11:17输出

  • 问题内容: 我想使用SAX解析器解析xml文件中的一些数据。我的xml如下: 为了解析此数据,我扩展了DefaultHandler。 解析后的输出为: 为什么发生这种情况而不是得到: 问题答案: 我的猜测是,您将每次调用都视为交付元素的完整文本。您应该对处理程序进行编码,以便连续调用以累积文本,并且仅在事件发生时捕获它:

  • Notepad++不仅可以实现第 3.10 节 “Notepad++支持显示回车符,换行符,TAB键,行首,行尾等特殊字符”,还可以实现插入特殊字符。 例 3.25. Notepad++可以插入特殊字符的用途举例 接着例 3.24 “Notepad++可以查看特殊字符的用途举例”继续说: 后来为了测试WXR中到底支持哪些控制字符 是不是所有的0-0x31都不支持,还是也支持一部分的控制字符, 这就

  • 我有一个joomla数据库,其中的mySQL连接排序规则是UTF8_General_CI。我在数据库中有一些额外的数据表(与joomla安装无关),我想用PHP脚本中的数据填充这些数据表。 后期编辑:勾选下方 当我尝试插入特殊字符(特定于语言和地区的字符)时,我在数据库中得到的是jibberish(像:®?®?™?),而不是“?”。 joomla数据库中所有列的排序规则为:utf8mb4_unic

  • 目前,我试图修改我的属性文件,以插入这些特殊字符,但它插入作为一个问号,而不是gulidsymbol,请查找以下变化。 如果有任何修改或错误,请帮助我。