`
sllizhimei
  • 浏览: 163377 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

oracle插入特殊字符

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

http://124.207.254.169:8080/m400/initRfAdd.action?rf.category=&target=blk;CALLER@rf.callinCode;SESSIONID@rf.standby1

Oracle把这里的URL的参数连接符⌖当成是一个自定义变量了,所以要求我给变量target赋值。怎么办呢?方法有三:

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

  我们在SQL*PLUS下执行 SQL> show define;命令时,显示下列结果:
  define "&" (hex 26)
  这个是Oracle里面用来识别自定义变量的设置,现在我们在SQL*PLUS下将其关闭:

  SQL> set define OFF;

  然后再在SQL*PLUS执行导入脚本,OK!问题搞定。

  执行完毕之后,重新设置set define ON。

·方法二:在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;

查找字母对应的ASCII码:
select ascii('&') from dual;
select chr(38)    from dual;

也可以改变自定义变量的连接符:
set define '*';

在对define进行设置完成插入时,也可以使用escape来实现。
SQL> show  escape;
escape OFF
SQL> set escape on;
SQL> show escape;
escape "\" (hex 5c)
SQL> insert into t values(1,'this is a \&test');

已创建 1 行。

SQL> select * from t;

        T1 T2
---------- -----------------
         1 this is a &test
分享到:
评论
1 楼 txlaijava 2010-06-04  
感谢分享咯. ~

相关推荐

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

    主要介绍了Oracle中插入特殊字符:&和'的解决方法,很有实用价值!需要的朋友可以参考下

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

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

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...

    一个oracle客户端(oracle sql handler)

    (1)关键字、注释块、引号内字符串、操作符、特殊字符等,用不同的彩色字体加以区别; (2)如果光标前面是一个括号,高亮度显示配对的括号 o 支持批量SQL语句的运行:用监控器监控每条语句的运行,在运行过程...

    Oracle SQL Handler (Oracle客户端工具) V3.1

    本工具是用 Java 开发的、专门用于 Oracle 数据库操作的一种图形界面工具: 多线程、多连接、支持 PL/SQL、功能实用、操作简便,能运行于所有平台包括 Windows、Linux 及 Unix,勿需安装 Oracle 客户端,仅 2.8 MB ...

    最全的oracle常用命令大全.txt

    ORACLE常用命令 一、ORACLE的启动和关闭 1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle>svrmgrl SVRMGR>connect internal SVRMGR>startup ...

    ORACLE9i_优化设计与系统调整

    §3.2.2 在参数值中使用特殊字符 65 §3.2.3 修改参数值 66 §3.2.4 显示当前参数值 69 §3.2.5 参数的使用 69 §3.2.6 参数的类型 69 §3.2.7 不能在参数文件中指定的参数 70 §3.2.8 当参数指定错误时怎么办? 70 ...

    震撼推出超方便实用的Oracle开发工具 - Oracle SQL Handler,双语界面,智能SQL编辑器,免装Oracle客户端,能运行于Windows, 双语界面

    (1)关键字、注释块、引号内字符串、操作符、特殊字符等,用不同的彩色字体加以区别; (2)如果光标前面是一个括号,高亮度显示配对的括号 支持批量SQL语句的运行:用监控器监控每条语句的运行,在运行过程中可以...

    Oracle开发工具 - Oracle SQL Handler(功能强大,超方便好用, 免装客户端, Windows / Linux)

    (1)关键字、注释块、引号内字符串、操作符、特殊字符等,用不同的彩色字体加以区别 ; (2)如果光标前面是一个括号,高亮度显示配对的括号 支持批量SQL语句的运行:用监控器监控每条语句的运行,在运行过程中...

    历史上最强的sql FAQ for Oracle

    [Q]怎么样查询特殊字符,如通配符%与_ [A]select * from table where name like 'A\_%' escape(避开) '\' [Q]如何插入单引号到数据库表中 [A]可以用ASCII码处理,其它特殊字符如&也一样,如 insert into t values...

    oracle10g超级帮助文件(中文版).chm

    [Q]怎么样查询特殊字符,如通配符%与_ [A]select * from table where name like 'A\_%' escape '\' [Q]如何插入单引号到数据库表中 [A]可以用ASCII码处理,其它特殊字符如&也一样,如 insert into t values('i'...

    ORACLE之常用FAQ V1.0(整理)

    [Q]怎么样查询特殊字符,如通配符%与_ 4 [Q]如何插入单引号到数据库表中 4 [Q]怎样设置事务一致性 4 [Q]怎么样利用游标更新数据 4 [Q]怎样自定义异常 4 [Q]十进制与十六进制的转换 4 [Q]怎么样抽取重复记录 5 [Q]...

    Oracle事例

    22、去除数据库中特殊字符 <1>.字符串字段中含有\"\'\",如果用来组合sql语句,会造成语句不准确。 比如:replace(f1,\'\'\'\',\'\') <2>.字符串字段中含有\"\\t \\n\",如果用来在c或者c++程序中输出到文件,...

    oracle chm帮助文件下载

    [Q]怎么样查询特殊字符,如通配符%与_ [Q]如何插入单引号到数据库表中 [Q]怎样设置事务一致性 [Q]怎么样利用光标更新数据 [Q]怎样自定义异常 [Q]十进制与十六进制的转换 [Q]能不能介绍SYS_CONTEXT的详细用法 [Q...

    orcale常用命令

    要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle>sqlplus SQL>connect internal SQL>startup SQL>quit b、关闭ORACLE系统 oracle>sqlplus SQL>connect internal ...

    oracle数据库中如何处理clob字段方法介绍

    插入: 直接写在SQL里面是不行的,一来SQL脚本有字符数限制,而来文章内容包含许多特殊字符,如换行,引号, 之类的东西,很麻烦。网上流行通用做法是先插入一个空CLOB字段,用empty_clob()方法来创建空字段,如: ...

    2009达内SQL学习笔记

    检索返回数据的顺序没有特殊意义,为了明确地排序用 SELECT 语句检索出的数据,可使用 ORDER BY 子句。 ORDER BY 子句取一个或多个列的名字。 对空值,按无穷大处理(升序中,空值排最后;降序中排最前)。 1、...

    基于PHP&&Layui 博客系统,简约易学,美观优雅,适合初学者。.zip

    PHP内置丰富的数据类型(如整型、浮点型、字符串、数组、对象等),并提供了大量的预定义函数,涵盖了字符串操作、数学运算、文件系统处理、日期时间处理、数据库连接等常见功能,极大提高了开发效率。 在Web开发中...

    PHP购物商城管理系统,采用php+mysql开发,原生代码无框架,代码易读易懂,面向过程编程,大学生编码手法。.zip

    PHP内置丰富的数据类型(如整型、浮点型、字符串、数组、对象等),并提供了大量的预定义函数,涵盖了字符串操作、数学运算、文件系统处理、日期时间处理、数据库连接等常见功能,极大提高了开发效率。 在Web开发中...

Global site tag (gtag.js) - Google Analytics