`
- 浏览:
439623 次
- 性别:
- 来自:
北京
-
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中不能执行成功!
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
c语言strlen转义字符,转义字符 & sizeof & strlen-CSDN博客.mhtml
在Oracle数据库中,有时我们需要插入包含特殊字符的数据,如URL中的`&`和文本中的单引号`'`。这些字符在SQL语句中具有特定含义,因此直接插入可能会导致语法错误或解析问题。本文将详细介绍如何处理和插入这些特殊...
实际插入时,因为小王通常是从表单中获取的变量,不过因为变量不能直接写入字符串,必须通过连接符&和字符串连接在一起,所以要写成如下形式:myusername=Request.Form("username") strSql="Insert Into users...
ORACLE 单引号转义: 在ORACLE中,单引号有两个作用: 1:字符串是由单引号引用 2:转义。 单引号的使用是就近配对,即就近原则。而在单引号充当转义角色时相对不好理解 1.从第二个单引号开始被视为...
在C#转义字符中,\n表示回车换行,\t表示横向跳到下一制表位置,\v表示竖向跳格,\b表示退格,\r表示回车,\f表示走纸换页,\\表示反斜线符,\'表示单引号符,\"表示双引号符,\a表示鸣铃,\ddd表示1~3位八进制数所...
在JavaScript中,反斜杠(\)用于转义特殊字符,例如"\n"表示换行,"\t"表示制表符,"\\"表示反斜杠本身,而"\'"和'\"'分别用来转义单引号和双引号。JavaScript中还有一类特殊的转义序列,如"\u0026"用于表示ASCII码...
例如,"&"的字符转义序列是"&",而数字转义序列是"&"(ASCII码值为38)。同样,"可以写成"<"(字符转义)或"<"(数字转义),">"对应">"(字符转义)或">"(数字转义)。值得注意的是,转义...
在Oracle数据库中,当尝试插入包含单引号(')的字符串数据时,通常会出现语法错误,因为单引号被用来标记字符串的开始和结束。Oracle SQL解析器会将单个单引号视为字符串的边界,如果字符串内部出现单引号,它会认为...
在Oracle数据库中,转义字符是用来表示特殊含义的字符,特别是在字符串中,当需要在文本中插入单引号(')或者其他特殊字符时,转义字符就显得尤为重要。Oracle的转义字符是单引号自身,也就是说,如果你要在字符串...
假设我们有一个字符串,其中包含了各种特殊字符,如双引号、单引号、与号、小于号、大于号以及一些空白符,我们需要将其正确地添加到`strings.xml`文件中。 ```xml 这是一个示例字符串,包含 "双引号",'单引号'...
2. **不要嵌套使用转义字符**:例如,`&amp;` 是不正确的使用方式,应该使用 `&`。 3. **转义字符通常用于替换特殊符号**:如上述提到的“&”、“<”、“>”等,以避免语法上的混淆。 4. **注意转义字符的...
Oracle EXP_Query参数转义符是指在使用Oracle EXP工具导出数据时,query参数中的特殊字符需要进行转义,以避免引发错误。在不同的操作系统平台上,EXP_Query参数转义符的处理方法略有不同,但通过使用parfile文件,...
在处理用户输入、插入特殊字符或进行字符串拼接时,使用转义字符可以确保浏览器正确地解析和展示内容。例如,如果你要在网页上显示一个带有尖括号的句子,如 "我喜欢吃苹果<和香蕉>",你应该写成 "我喜欢吃苹果&...
`,和号 `&` 的转义序列是 `&`。这样,即使在文本中出现这些特殊字符,浏览器也会正确地将其识别为普通字符,而不会误解为HTML标签。 在HTML中,常见的转义字符有: 1. `<`:代表小于号 ` 2. `>`:代表...
在字符串中插入这些特殊字符时,必须使用反斜杠进行转义,否则JavaScript引擎会将其解释为控制字符而非文本内容。 "html转义字符表"和"HTML语言特殊字符对照表(ISO Latin-1字符集) - 来源:嘻嘻网 114.xixik....
最大的区别是: 双引号会替换变量的值,而单引号会把它当做字符串输出。 例如: <?php $name=string; echo 字符串 . '$name'; echo 字符串 . $name; ?> 结果: 字符串$name 字符串string 转义字符,...
宽字符和宽字符串同样支持转义字符,但处理方式与普通字符和字符串略有不同。 7. **字符串字面量中的转义字符**: 在字符串字面量中,如果需要使用反斜杠自身,必须写成`\\`,因为编译器会把单个`\`解释为转义字符的...