分类: Oracle

今天在导入一批数据到Oracle时,碰到了一个问题:Toad提示要给一个自己定义变量AMP赋值,一開始我非常纳闷。数据是一系列的Insert语句,怎么会有自己定义变量呢?后来搜索了一下keywordAMP发现。原来是由于在插入数据中有一个字段的内容例如以下:



http://mobile.three.com.hk/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如何插入在特殊字符: & 和 ' (各种解决方案)的更多相关文章

  1. 【方法】Oracle用户密码含特殊字符时的登陆问题

    [方法]Oracle用户密码含特殊字符时的登陆问题 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它 ...

  2. mybatis+oracle 完成插入数据库,并将主键返回的注意事项

    mybatis+oracle 完成插入数据库,并将主键返回的注意事项一条插入语句就踩了不少的坑,首先我的建表语句是: create table t_openapi_batch_info( BATCH_ ...

  3. oracle 批量插入-支持序列自增

    1.创建表.序列 -- Create table create table test_batch ( id number not null, name ), account ) ) -- Create ...

  4. for循环往Oracle中插入n条数据,主键自增

    1.主键自增实现方法:http://www.cnblogs.com/Donnnnnn/p/5959871.html 2.for循环往Oracle中插入n条数据 BEGIN .. loop insert ...

  5. PLSQL往Oracle数据库插入中文后变为问号 和 启动PLSQL时提示NLS_LANG在客户端不能确定的解决办法

    PLSQL往Oracle数据库插入中文后变为问号 和 启动PLSQL时提示NLS_LANG在客户端不能确定的解决办法 1.检查服务器的字符编码 Select * from V$NLS_PARAMETE ...

  6. oracle 之 插入超长字段并包含&字符的处理方法

    oracle 在插入超长数据字符串时是默认转为varchar2类型,而这类型只有4000字节,即使通过oracle改变字符串类型为clob,也是在插入时默认转为varchar2类型. 处理方式:可以通 ...

  7. MyBatis在Oracle中插入数据并返回主键的问题解决

    引言:  在MyBatis中,希望在Oracle中插入数据之时,同一时候返回主键值,而非插入的条数... 环境:MyBatis 3.2 , Oracle. Spring 3.2   SQL Snipp ...

  8. Oracle 循环插入测试数据(网上收集整理)

    一 Oracle 循环插入测试数据 declare          maxrecords constant int:=1000;          i int :=1; begin for i in ...

  9. oracle 实现插入自增列(类似SqlServer Identity)

    oracle不像sql server 有关键字identity直接可插入数据时自增 ,Oracle是不能用Identity,可以使用Sequence Create Table Tempinfo( id ...

随机推荐

  1. c++实用技巧

    原地址:http://www.cnblogs.com/easymind223/articles/2576904.html 晚上的时间总是习惯性的在cnblogs逛街,今天又看到了好文章,其c++味道浓 ...

  2. POJ 1325 ZOJ 1364 最小覆盖点集

    题意:有A,B两台机器, 机器A 有 n个模式(0, 1, 2....n-1),同样机器B有m个模式, 两个机器一开始的模式都为0,有k个作业(id,x,y) 表示作业编号id, 该作业必须在A机器在 ...

  3. 【iOS】苹果,百度Map定位使用与总结

    iOS中使用较多的3款地图,google地图.百度地图.苹果自带地图(高德).当中苹果自带地图在中国使用的是高德的数据.苹果在iOS 6之后放弃了使用谷歌地图,而改用自家的地图.在国内使用的较多的就是 ...

  4. Cocos2dx3.4 VS2013无法打开包括文件extensions/ExtensionExport.h解决的方法

    本来打算看白鹭引擎的.可是又被叫回来研究新引擎呢,不搞不知道,一搞发现cocos2dx新版本号3.4又有了一些变化. 我查了网上的资源,都没有解决的方法.我如今应该是第一个出这个问题的解决的方法哦.. ...

  5. PSD 学位涵义   Poor, Smart and Deep desire to become rich 的缩写,不是真正的学位认证,是对一种心理状态的形容,所谓PSD学位是形容那些贫穷,但是很聪明,很深…_●.×

    PSD 学位涵义 Poor, Smart and Deep desire to become rich 的缩写,不是真正的学位认证,是对一种心理状态的形容,所谓PSD学位是形容那些贫穷,但是很聪明,很 ...

  6. python实现了字符串的按位异或和php中的strpad函数

    近期在写自己主动化測试,因为开发加密中用到strpad和字符串的按位异或,而python中没有这种函数和功能,所以必须自己写一套,要不自己主动化測试无法进行,所以就用python实现了一下,因为在写字 ...

  7. 收集经常使用的.net开源项目

    Json.NET http://json.codeplex.com/ Json.Net是一个读写Json效率比較高的.Net框架.Json.Net 使得在.Net环境下使用Json更加简单.通过Lin ...

  8. Lichee (五岁以下儿童) sysconfig1.fex 配置系统

    sysconfig配置系统,作为一个通用的软件平台,还希望通过它.能够适应用户不同的方案.通过给出一个相应的配置.用户的方案就能够自己主动执行,而不须要改动系统里面的代码,或者又一次给出參数. 一. ...

  9. SE 2014年4月29日

    交换网络中有vlan1 到20个vlan,要求使用MSTP技术实现vlan的负载分担. SW2为实例1(vlan1-vlan10)的主根,SW3为备根 SW3为实例2(vlan11-vlan20)的主 ...

  10. CodeIgniter Apacheserver htaccess SEO重写写法

    1)支持重写 2)兼容全部APACHE server 3)假设不是文件,请求的结尾不包含反斜杠,自己主动跳转到反斜杠 4)文件名称 .htaccess 5)这个放到nginxserver怎么都不支持重 ...