今天在导入一批数据到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
分享到:
相关推荐
在Oracle数据库中,有时我们需要插入包含特殊字符的数据,如URL中的`&`和文本中的单引号`'`。这些字符在SQL语句中具有特定含义,因此直接插入可能会导致语法错误或解析问题。本文将详细介绍如何处理和插入这些特殊...
为了解决这个问题,我们需要采取一些措施来正确地插入这些特殊字符。 首先,处理含有单引号的数据时,最常见的一种方法是通过在单引号前添加另一个单引号来转义它。例如,如果字符串为"John's Book",在SQL语句中应...
这是Oracle的一个特殊行为,它将月份默认设置为5月。 #### 注意事项 1. **默认值**:当缺少时间部分时,Oracle会使用0作为默认值;当缺少日期部分时,默认为该月的第一天;当缺少月份部分时,默认为当前月份。 2...
在 Oracle 数据库中,XMLType 是一种特殊的数据类型,用于存储和处理 XML 数据。在本文中,我们将详细介绍 Java 中 XML 文件的处理及 Oracle 中 XMLType 的插入和读取。 一、Oracle 中创建表 在 Oracle 数据库中,...
在IT行业中,数据库管理和编程语言的交互是常见的工作场景,特别是在处理特殊数据类型时,如emoji表情。Oracle数据库系统在设计之初...在实际项目中,务必测试各种情况,确保所有设备和平台都能正确处理这些特殊字符。
在处理泰文、韩文、阿拉伯文等非中文语言入库时,如果数据库的默认字符集(如ZHS16GBK)和国家字符集(如AL16UTF16)不适应这些语言的编码,就需采取特殊策略。文章作者通过研究和实践,提出使用Oracle的sqlloader...
在创建或更新表、插入数据、更新数据或执行其他数据库操作时,我们有时需要确保输入的数据不包含任何非法或特殊字符,以避免引发错误或破坏数据的完整性。本话题将深入探讨如何在Oracle存储过程中检查和处理非法字符...
今天在导入一批数据到Oracle时,碰到了这样一个问题:Toad提示要给一个自定义变量AMP赋值,一开始我很纳闷,数据是一系列的Insert语句,怎么会有自定义变量呢?后来搜索了一下关键字AMP发现,原来是因为在插入数据中...
在Oracle数据库中,转义字符是用来表示特殊含义的字符,特别是在字符串中,当需要在文本中插入单引号(')或者其他特殊字符时,转义字符就显得尤为重要。Oracle的转义字符是单引号自身,也就是说,如果你要在字符串...
在Oracle数据库中,特殊函数是SQL查询和数据库管理的关键组成部分,它们极大地增强了数据处理和分析的能力。本篇文章将深入探讨一些非常实用的Oracle特殊函数,这些函数在日常的数据库操作中有着广泛的应用。 1. **...
下面是一个具体的例子,展示如何将字符串转化为CLOB类型,并插入到Oracle数据库中: ```csharp using System.Data; using Oracle.ManagedDataAccess.Client; public bool InsertTsbhInfo(string strTB, string ...
字符集定义了数据库能够识别和存储的字符范围,这对支持多种语言或者特殊字符的系统至关重要。下面我们将详细探讨如何进行Oracle字符集的修改。 首先,我们需要理解Oracle字符集的基本概念。Oracle字符集分为两种...
**解答**: 在Oracle中查询包含特殊字符如通配符%与_的数据时,需要使用转义字符来避免这些字符被解释为通配符。通常使用的转义字符是反斜杠(\)或双写该字符。 - **示例**: 如果要查找包含百分号(%)的名字,可以使用...
本章深入探讨了子查询的应用以及Oracle中的一些特殊特性,如伪列和内置函数。这些知识对于编写高效、灵活的SQL查询非常重要。 ### 表空间、数据库对象 #### Oracle数据库对象 Oracle数据库对象是构成数据库的基本...
Oracle 数据库中,字段值自动加 1 是一个常见的需求,特别是在数据插入时需要自动生成唯一标识符的情况下。下面将详细介绍如何实现 Oracle 数据库字段值自动加 1。 首先,需要创建一个表来存储数据。在本示例中,...
- **OPENQUERY**:SQL Server 中的一个特殊函数,用于查询其他数据库管理系统(如 Oracle)中的数据。 #### 总结 通过上述步骤,我们成功地解决了 Oracle10g (US7ASCII 编码) 中文数据无法正常导入到 SQL Server ...
长字符串的处理 Oracle 也有它特殊的地方。INSERT 和 UPDATE 时最大可操作的字符串长度小于等于4000 个单字节,如果要插入更长的字符串,请考虑字段用 CLOB 类型,方法借用 Oracle 里自带的 DBMS_LOB 程序包。插入...