`
swbssd
  • 浏览: 56852 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

Oracle一些特殊字符转义

阅读更多

转载做备忘记录:

SQL> select * from test;
TEST
--------------------
sdd_kk
d'd
dfsfsa
dffa%asfs
12345
1%2345
1%54321
2%54321
%%54321
A&B
已选择9行。

        其中包含特殊的字符分别为%,_,&,有可能包含这些字符的数据含有错误,或者需要查找包含这些字符的数据。

SQL> select * from test where test like 'sdd _%' escape ' ';
TEST
--------------------
sdd_kk
        转义字符为' '(空格);
SQL> select * from test where test like 'sdd\_%' escape '\';
TEST
--------------------
sdd_kk
转义字符为'\';

SQL> select * from test where test like 'sdd=_%' escape '=';
TEST
--------------------
sdd_kk
        转义字符为'=';
SQL> select * from test where test like 'sdd/_%' escape '/';
TEST
--------------------
sdd_kk
          转义字符为'/';
SQL> select * from test where test like 'sddd_%' escape 'd';
未选定行
        转义字符为d,没有实现转义功能;
SQL> select * from test where test like '%\_%' escape '\';
TEST
--------------------
sdd_kk
        查找包含所有'_'的字段。
        同理:通过这种方法查找含有'%'的所有字段:
SQL> select * from test where test like '%\%%' escape '\';
TEST
--------------------
dffa%asfs
1%2345
1%54321
2%54321
%%54321
        但是'&'不能通过转义字符查找:
SQL> select * from test where test like '%\&%' escape'\';
select * from test where test like '%\&%' escape'\'
                                   *
第 1 行出现错误:
ORA-01424: 转义符之后字符缺失或非法
        可以通过另外的方式进行转义:
SQL> select ascii('&') from dual;
ASCII('&')
----------
        38
SQL> select * from test where test like '%'||chr(38)||'%';
TEST
--------------------
A&B
           '''的转义:
SQL> select * from test where test like '%''%';
TEST
--------------------
d'd

特殊符号的数据的插入
SQL> insert into test values('test&test');
输入 test 的值: test
原值    1: insert into test values('test&test')
新值    1: insert into test values('testtest')          -虽然插入,但是数据不对。
已创建 1 行。
SQL> show define
define "&" (hex 26)
SQL> set define off
SQL> show define
define OFF
SQL> insert into test values('test&test');
已创建 1 行。
SQL> show escape
escape OFF
SQL> set escape on
SQL> show escape
escape "\" (hex 5c)
SQL> insert into test values('test\&test');
已创建 1 行。
SQL> select * from test;
TEST
--------------------
sdd_kk
d'd
dfsfsa
dffa%asfs
12345
1%2345
1%54321
2%54321
%%54321
A&B
testtest
TEST
--------------------
test&test
test&test
已选择13行。
SQL> commit;
提交完成。
SQL> select * from test;
TEST
--------------------
sdd_kk
d'd
dfsfsa
dffa%asfs
12345
1%2345
1%54321
2%54321
%%54321
A&B
testtest
TEST
--------------------
test&test
test&test
已选择13行。
SQL> insert into test values('test\%test');
已创建 1 行。
SQL> insert into test values('test\_test');
已创建 1 行。
SQL> insert into test values('test\'test);
insert into test values('test'test)
                              *
第 1 行出现错误:
ORA-00917: 缺失逗号

SQL> insert into test values('test''test');
已创建 1 行。
SQL> select * from test;
TEST
--------------------
sdd_kk
d'd
dfsfsa
dffa%asfs
12345
1%2345
1%54321
2%54321
%%54321
A&B
testtest
TEST
--------------------
test&test
test&test
test%test
test_test
test'test
已选择16行。

连接符‘||’导致了新一轮的转义:连接符号‘||’左右的单引号没有任何的关系,除非‘||’是作为字符串的一部分(这在动态SQL中很常见)。

SQL> SELECT 'ORACLE'||'''' FROM DUAL;
'ORACLE'||''
----------
ORACLE'
个人理解,'ORACLE'||'''' 后面的“''''”应该认为是一个字符串(即前后单引号,中间是“''”串,而中间又是密集单引号,因此第一个为转义功能)
SQL> SELECT 'ORACLE''''' FROM DUAL;
'ORACLE'''''
------------
ORACLE''

对于第一个,前两个单引号配对,后面四个单引号按照上面的第一条原则分配,既:SELECT 'ORACLE'||'''' FROM DUAL;
对于第二个,由于第二个单引号后面存在单引号,所以就不与第一个配对,而是充当了转义的角色。既:SELECT 'ORACLE''''' FROM DUAL;

分享到:
评论

相关推荐

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

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

    Oracle中转义字符的详细介绍

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

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

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

    SQL中的转义字符

    在SQL(结构化查询语言)中,转义字符是一个关键概念,它允许用户在字符串中插入特殊字符,如单引号、百分号和下划线,这些字符在SQL语句中通常具有特定含义。转义字符使得这些特殊字符能够被当作普通文本处理,而...

    浅谈oracle中单引号转义

    在Oracle数据库中,单引号(')...总结来说,理解和正确使用单引号转义是编写Oracle SQL查询时的关键技能,尤其是在处理动态SQL和字符串操作时。了解双引号在特定情况下的特殊含义也有助于编写更灵活和准确的SQL语句。

    Oracle中的正则表达式

    * 字符转义与字符类:字符转义是指通过元字符“\”与其他字符进行组合,从而实现特殊字符的匹配。 * 字符组:字符组是指将模式中的某些部分作为一个整体,可以使用量词来修饰字符组,从而提高正则表达式的灵活性。 ...

    oracle常用问题解答

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

    java调用shell向DataX传参,带where条件,特殊字符

    在Java程序中调用Shell命令并传入带有特殊字符的参数时,会遇到一些挑战,因为Shell和DataX对特殊字符的处理方式可能不同。 首先,让我们理解Java如何调用Shell命令。在Java中,我们可以使用Runtime或者...

    Oracle 11g OCP 051

    在Oracle数据库中,ESCAPE子句可以用来定义转义字符,这样就可以在LIKE模式中搜索包含特殊字符的字符串。这表明了在SQL编程中,字符匹配和转义的技巧,这对于编写复杂查询语句非常重要。 根据提供的内容,我们详细...

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

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

    oracle学习必备资料

    1. **处理特殊字符**:在查询时,如果需要匹配包含特殊字符如`%`或`_`的字段,可以使用`LIKE`关键字配合`ESCAPE`来指定转义字符。例如,查询以`A%`开头的数据,可以写为`SELECT * FROM table WHERE name LIKE 'A\%' ...

    从mysql转换到oracle数据库.docx

    2. 将 `\'` 替换成 `''`,因为 Oracle 的转义字符为单引号。 3. 将 ` ` 替换成 ` `,因为 Oracle 会将其当做参数。 4. 将 `,` 替换成 `,''`,这是需要转义引起的。 四、MySQL 与 Oracle 的不同 在实际...

    mysql转换到oracle数据库

    - 特殊字符如` `等需转换为其对应的ASCII码或直接输入相应字符。 - 字符串中的逗号`,`需要被正确转义。 #### 二、程序处理中的关键差异 **1. 自动增量** - **MySQL**:支持`AUTO_INCREMENT`特性,可实现...

    oracle 讲义

    - 转义字符用于特殊字符处理,如`\%`用于在`like`中匹配百分号。 - `escape`关键字定义自定义转义字符,如`escape '$'`。 以上是Oracle数据库的基础知识,包括客户端工具使用、用户管理、数据查询、数据过滤、...

    Oracle目录SQL请求转TXT.rar_oracle_数据集TXT

    在处理过程中,可能需要考虑字段分隔符、换行符以及可能的特殊字符转义。 5. 错误处理:捕获并处理可能的异常,如网络问题、权限错误、SQL语法错误等。 6. 文件命名和存储:根据需求,为输出的TXT文件设定合适的名称...

    PHP Oracle.rar

    应使用预处理语句、转义特殊字符或使用PDO扩展来防止SQL注入攻击。同时,确保数据库连接参数的安全,避免敏感信息泄露。 9. **资源管理** 完成数据库操作后,记得关闭游标和连接,释放资源,如oci_free_statement...

    java调用shell向DataX传递参数,where条件,包含特殊字符

    当条件包含特殊字符(如单引号 `'`、双引号 `"`、反斜杠 `\` 或者管道符号 `|` 等)时,必须正确转义以防止shell解释器错误解析。Java中的`StringEscapeUtils`类可以帮助你完成字符串的转义。 以下是一个简单的示例...

Global site tag (gtag.js) - Google Analytics