`
sllizhimei
  • 浏览: 165668 次
  • 性别: 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数据库中,有时我们需要插入包含特殊字符的数据,如URL中的`&`和文本中的单引号`'`。这些字符在SQL语句中具有特定含义,因此直接插入可能会导致语法错误或解析问题。本文将详细介绍如何处理和插入这些特殊...

    oracle插入字符串数据时字符串中有'单引号问题

    为了解决这个问题,我们需要采取一些措施来正确地插入这些特殊字符。 首先,处理含有单引号的数据时,最常见的一种方法是通过在单引号前添加另一个单引号来转义它。例如,如果字符串为"John's Book",在SQL语句中应...

    向oracle中插入日期

    这是Oracle的一个特殊行为,它将月份默认设置为5月。 #### 注意事项 1. **默认值**:当缺少时间部分时,Oracle会使用0作为默认值;当缺少日期部分时,默认为该月的第一天;当缺少月份部分时,默认为当前月份。 2...

    java中xml文件的处理及oracle中xmltype的插入和读取.pdf

    在 Oracle 数据库中,XMLType 是一种特殊的数据类型,用于存储和处理 XML 数据。在本文中,我们将详细介绍 Java 中 XML 文件的处理及 Oracle 中 XMLType 的插入和读取。 一、Oracle 中创建表 在 Oracle 数据库中,...

    java解析emoji表情存入oracle,并正常使用

    在IT行业中,数据库管理和编程语言的交互是常见的工作场景,特别是在处理特殊数据类型时,如emoji表情。Oracle数据库系统在设计之初...在实际项目中,务必测试各种情况,确保所有设备和平台都能正确处理这些特殊字符。

    Oracle 数据库多语言入库问题的解决方案

    在处理泰文、韩文、阿拉伯文等非中文语言入库时,如果数据库的默认字符集(如ZHS16GBK)和国家字符集(如AL16UTF16)不适应这些语言的编码,就需采取特殊策略。文章作者通过研究和实践,提出使用Oracle的sqlloader...

    ORACLE存储过程判断非法字符

    在创建或更新表、插入数据、更新数据或执行其他数据库操作时,我们有时需要确保输入的数据不包含任何非法或特殊字符,以避免引发错误或破坏数据的完整性。本话题将深入探讨如何在Oracle存储过程中检查和处理非法字符...

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

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

    Oracle中转义字符的详细介绍

    在Oracle数据库中,转义字符是用来表示特殊含义的字符,特别是在字符串中,当需要在文本中插入单引号(')或者其他特殊字符时,转义字符就显得尤为重要。Oracle的转义字符是单引号自身,也就是说,如果你要在字符串...

    Oracle几个很有用的特殊函数使用方法,经验只谈

    在Oracle数据库中,特殊函数是SQL查询和数据库管理的关键组成部分,它们极大地增强了数据处理和分析的能力。本篇文章将深入探讨一些非常实用的Oracle特殊函数,这些函数在日常的数据库操作中有着广泛的应用。 1. **...

    将长于4000字符的字符串转化为CLOB类型存入数据库

    下面是一个具体的例子,展示如何将字符串转化为CLOB类型,并插入到Oracle数据库中: ```csharp using System.Data; using Oracle.ManagedDataAccess.Client; public bool InsertTsbhInfo(string strTB, string ...

    oracle 修改字符集的设置

    字符集定义了数据库能够识别和存储的字符范围,这对支持多种语言或者特殊字符的系统至关重要。下面我们将详细探讨如何进行Oracle字符集的修改。 首先,我们需要理解Oracle字符集的基本概念。Oracle字符集分为两种...

    oracle常用问题解答

    **解答**: 在Oracle中查询包含特殊字符如通配符%与_的数据时,需要使用转义字符来避免这些字符被解释为通配符。通常使用的转义字符是反斜杠(\)或双写该字符。 - **示例**: 如果要查找包含百分号(%)的名字,可以使用...

    Oracle经典教程1——走进Oracle

    本章深入探讨了子查询的应用以及Oracle中的一些特殊特性,如伪列和内置函数。这些知识对于编写高效、灵活的SQL查询非常重要。 ### 表空间、数据库对象 #### Oracle数据库对象 Oracle数据库对象是构成数据库的基本...

    oracle数据库字段值自动加1

    Oracle 数据库中,字段值自动加 1 是一个常见的需求,特别是在数据插入时需要自动生成唯一标识符的情况下。下面将详细介绍如何实现 Oracle 数据库字段值自动加 1。 首先,需要创建一个表来存储数据。在本示例中,...

    Oracle10g US7ASCII 编码中文无法导入sqlserver问题解决

    - **OPENQUERY**:SQL Server 中的一个特殊函数,用于查询其他数据库管理系统(如 Oracle)中的数据。 #### 总结 通过上述步骤,我们成功地解决了 Oracle10g (US7ASCII 编码) 中文数据无法正常导入到 SQL Server ...

    oracle与mysql的区别

    长字符串的处理 Oracle 也有它特殊的地方。INSERT 和 UPDATE 时最大可操作的字符串长度小于等于4000 个单字节,如果要插入更长的字符串,请考虑字段用 CLOB 类型,方法借用 Oracle 里自带的 DBMS_LOB 程序包。插入...

Global site tag (gtag.js) - Google Analytics