`
落地窗
  • 浏览: 438096 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle 内的insert插入转义字符 单引号'和& & 符的问题

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

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语句中将'&'替换成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中select查询 where条件中一般的转义字符

用法是:
select distinct t.TABLE_NAME from user_tab_columns t
where t.TABLE_NAME like 'A/_%' ESCAPE '/'
ESCAPE 后的字符可以随意定义。此语句功能是查出所有以A_开头的表名。由于_在sql的like中代表一个字符,所以需要使用转义字符。
但当有多个like字符时,在每个like后都要指定转移字符,例如:
select distinct t.TABLE_NAME from user_tab_columns t
where t.TABLE_NAME like 'A/_%' ESCAPE '/'
or t.TABLE_NAME like 'B/_%' ESCAPE '/'
or t.TABLE_NAME like 'C/_%' ESCAPE '/'
or t.TABLE_NAME like 'D/_%' ESCAPE '/'
此语句可以查出以“A_”“B_”“C_”“D_”开头的表名。
如果写成
select distinct t.TABLE_NAME from user_tab_columns t
where t.TABLE_NAME like 'A/_%'



or t.TABLE_NAME like 'B/_%'
or t.TABLE_NAME like 'C/_%'
or t.TABLE_NAME like 'D/_%' ESCAPE '/'
那么能查出“A/”且其后至少有一个字符“B/”且其后至少有一个字符“C/”且其后至少有一个字符“D_”的表名





转自:http://hi.baidu.com/lxl_buat/blog/item/39963ff7fa5bb028720eecad.html



其中Set define OFF; 其中似乎在pl/sql中不能执行成功!
分享到:
评论

相关推荐

    c语言strlen转义字符,转义字符 & sizeof & strlen-CSDN博客.mhtml

    c语言strlen转义字符,转义字符 & sizeof & strlen-CSDN博客.mhtml

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

    在Oracle数据库中,有时我们需要插入包含特殊字符的数据,如URL中的`&`和文本中的单引号`'`。这些字符在SQL语句中具有特定含义,因此直接插入可能会导致语法错误或解析问题。本文将详细介绍如何处理和插入这些特殊...

    SQL语法关于&、双引号、和单引号的解释

    实际插入时,因为小王通常是从表单中获取的变量,不过因为变量不能直接写入字符串,必须通过连接符&和字符串连接在一起,所以要写成如下形式:myusername=Request.Form("username") strSql="Insert Into users...

    浅谈oracle中单引号转义

    ORACLE 单引号转义: 在ORACLE中,单引号有两个作用:   1:字符串是由单引号引用   2:转义。  单引号的使用是就近配对,即就近原则。而在单引号充当转义角色时相对不好理解  1.从第二个单引号开始被视为...

    C#转义字符如何输出双引号等

    在C#转义字符中,\n表示回车换行,\t表示横向跳到下一制表位置,\v表示竖向跳格,\b表示退格,\r表示回车,\f表示走纸换页,\\表示反斜线符,\'表示单引号符,\"表示双引号符,\a表示鸣铃,\ddd表示1~3位八进制数所...

    常用HTML转义字符,html转义符,JavaScript转义符,html转义字符表,HTML语言特殊字符对照表(ISO Latin-1字符集) - 来源:嘻嘻网 114_xixik_com_files

    在JavaScript中,反斜杠(\)用于转义特殊字符,例如"\n"表示换行,"\t"表示制表符,"\\"表示反斜杠本身,而"\'"和'\"'分别用来转义单引号和双引号。JavaScript中还有一类特殊的转义序列,如"\u0026"用于表示ASCII码...

    HTML & XML 转义字符

    例如,"&"的字符转义序列是"&",而数字转义序列是"&"(ASCII码值为38)。同样,"可以写成"<"(字符转义)或"<"(数字转义),">"对应">"(字符转义)或">"(数字转义)。值得注意的是,转义...

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

    在Oracle数据库中,当尝试插入包含单引号(')的字符串数据时,通常会出现语法错误,因为单引号被用来标记字符串的开始和结束。Oracle SQL解析器会将单个单引号视为字符串的边界,如果字符串内部出现单引号,它会认为...

    Oracle中转义字符的详细介绍

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

    HTML和XML中的转义字符

    2. **不要嵌套使用转义字符**:例如,`&` 是不正确的使用方式,应该使用 `&`。 3. **转义字符通常用于替换特殊符号**:如上述提到的“&”、“<”、“>”等,以避免语法上的混淆。 4. **注意转义字符的...

    oracle exp query参数 转义符的各个操作系统通用解决方法

    Oracle EXP_Query参数转义符是指在使用Oracle EXP工具导出数据时,query参数中的特殊字符需要进行转义,以避免引发错误。在不同的操作系统平台上,EXP_Query参数转义符的处理方法略有不同,但通过使用parfile文件,...

    常用HTML转义字符

    在处理用户输入、插入特殊字符或进行字符串拼接时,使用转义字符可以确保浏览器正确地解析和展示内容。例如,如果你要在网页上显示一个带有尖括号的句子,如 "我喜欢吃苹果<和香蕉>",你应该写成 "我喜欢吃苹果&...

    HTML 转义字符串

    `,和号 `&` 的转义序列是 `&`。这样,即使在文本中出现这些特殊字符,浏览器也会正确地将其识别为普通字符,而不会误解为HTML标签。 在HTML中,常见的转义字符有: 1. `<`:代表小于号 ` 2. `>`:代表...

    HTML转义字符串

    在字符串中插入这些特殊字符时,必须使用反斜杠进行转义,否则JavaScript引擎会将其解释为控制字符而非文本内容。 "html转义字符表"和"HTML语言特殊字符对照表(ISO Latin-1字符集) - 来源:嘻嘻网 114.xixik....

    php中的单引号、双引号和转义字符详解

    最大的区别是: 双引号会替换变量的值,而单引号会把它当做字符串输出。 例如: <?php $name=string; echo 字符串 . '$name'; echo 字符串 . $name; ?> 结果: 字符串$name 字符串string 转义字符,...

    C++第4课转义字符

    宽字符和宽字符串同样支持转义字符,但处理方式与普通字符和字符串略有不同。 7. **字符串字面量中的转义字符**: 在字符串字面量中,如果需要使用反斜杠自身,必须写成`\\`,因为编译器会把单个`\`解释为转义字符的...

    Android xml转义字符

    假设我们有一个字符串,其中包含了各种特殊字符,如双引号、单引号、与号、小于号、大于号以及一些空白符,我们需要将其正确地添加到`strings.xml`文件中。 ```xml 这是一个示例字符串,包含 "双引号",'单引号'...

Global site tag (gtag.js) - Google Analytics