`

Oracle的转义字符需要用ESCAPE函数来定义

阅读更多

SQL> create table t_char(a varchar2(20));

SQL> insert into t_char values('a_b');

SQL> insert into t_char values('acb');

SQL> insert into t_char values('a%b');

SQL> insert into t_char values('a''b');

SQL> insert into t_char values('a/b');

SQL> insert into t_char values('a\b');

SQL> insert into t_char values('%');

SQL> insert into t_char values('_');

SQL> insert into t_char values('a');

SQL> commit;

 

SQL> select * from t_char;

A

--------------------

a_b

acb

a%b

a'b

a/b

a\b

%

_

a

 

SQL> select * from t_char where a like 'a_b';

A

--------------------

a_b

acb

a%b

a'b

a/b

a\b

 

SQL> select * from t_char where a like 'a\_b' escape '\';

A

--------------------

a_b

 

--可见要查询含有通配字符的字符串,必须要使用escape函数

 

 

SQL> select * from t_char where a like 'a\'b' escape '\';

ERROR:

ORA-01756: quoted string not properly terminated

SQL> select * from t_char where a like 'a''b' escape '\';

A

--------------------

a'b

 

--但是字符'还是需要用两个''来代替字符串中的单引号

 

 

SQL> select * from t_char where a like 'ax_b' escape 'x';

A

--------------------

a_b

 

SQL> select * from t_char where a like 'a''_b' escape '''';

A

--------------------

a_b

 

SQL> select * from t_char where a like 'a_%b' escape '_';

A

--------------------

a%b

 

--可以用其他字符,甚至是“'”、“_”、“%”来用作转义字符,但是一般都使用\,以免发生逻辑错误

 

 

SQL> select * from t_char where a like 'a\/b' escape '\';

select * from t_char where a like 'a\/b' escape '\'

                                  *

ERROR at line 1:

ORA-01424: missing or illegal character following the escape character

SQL> select * from t_char where a like 'a_/b' escape '_';

select * from t_char where a like 'a_/b' escape '_'

                                  *

ERROR at line 1:

ORA-01424: missing or illegal character following the escape character

 

SQL> select * from t_char where a like 'a//b' escape '/';

A

--------------------

a/b

 

SQL> select * from t_char where a like 'a/\b' escape '/';

select * from t_char where a like 'a/\b' escape '/'

                                  *

ERROR at line 1:

ORA-01424: missing or illegal character following the escape character

 

SQL> select * from t_char where a like 'a\\b' escape '\';

A

--------------------

a\b

--要搜索"/"或者"\"则必须使用与之相同的符号作为转义字符,否则无效

 

分享到:
评论

相关推荐

    Oracle 11g OCP 051

    在这里,由于'_'是一个特殊字符,在LIKE子句中用来匹配任意单个字符,因此必须使用ESCAPE子句来指定一个转义字符来匹配实际的'_'字符。 从知识点角度来看,这里涉及到SQL语言中的模式匹配功能,以及如何对模式匹配...

    oracle常用问题解答

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

    oracle 讲义

    - `escape`关键字定义自定义转义字符,如`escape '$'`。 以上是Oracle数据库的基础知识,包括客户端工具使用、用户管理、数据查询、数据过滤、排序以及函数应用。这些内容构成了学习Oracle数据库的基础,并为更...

    oracle常用函数

    `则会找到以'AC_'开头的job_id,`\`作为转义字符。 12. 排序:`ORDER BY`用于对结果集进行排序,`ASC`(默认)是升序,`DESC`是降序。例如,`ORDER BY last_name`按姓氏字母顺序排列,`ORDER BY last_name DESC`则...

    oracle学习必备资料

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

    马士兵oracle笔记

    12. **转义字符**:在`like`操作中,`%`和`_`是特殊字符,若要匹配它们本身,需要使用转义字符,如`ename like '%$%%' escape '$'`和`ename like '%/%%'`。 13. **排序**:`order by`子句用于对结果集进行排序,`...

    oracle管理及优化文档 粗略整理

    `ESCAPE`关键字用于指定一个转义字符,但这里使用`*`作为转义字符并不常见,可能会引起混淆。 - **多条件查询**:`SELECT * FROM EMP WHERE EMPNO = 10 AND JOB NOT IN ('MANAGER', 'CLERK') AND SAL >= 2000` - *...

    Oracle_学习使用SQL语句

    需要注意的是,当`%`、`_`、`'`、`&`需要作为查询条件的一部分时,可能需要进行转义,如使用`ESCAPE`关键字或ASCII编码。 以上内容涵盖了Oracle SQL语句的基础用法,对于数据库开发人员来说是必备的知识点。了解并...

    oracle_cj.doc

    例如,`LIKE 'S\_%' ESCAPE '\`查找以"S_"开头的表名,`\`是转义字符。 总结,Oracle数据库提供了强大的数据管理功能,其SQL语法和SQLPlus工具提供了丰富的操作手段。理解和熟练掌握这些知识点对于任何Oracle数据库...

    ORACLE复习资料学习资料重点

    单引号的转义需要使用两个单引号,如`'s`需要写成`''s`。`LIKE`操作符用于模式匹配,配合`ESCAPE`可以处理特殊字符。例如,`job_id LIKE '%#_RE%' ESCAPE '#'`能找到含有"#_RE"模式的岗位ID。`REPLACE`函数则用于...

    Oracle课堂笔记常用命令,简单易懂

    - 使用`LIKE`操作符进行模糊匹配时,需要注意转义特殊字符,例如`%`或`_`,可以使用`ESCAPE`关键字来指定转义字符,例如: ``` SELECT * FROM table_name WHERE column_name LIKE '%test%' ESCAPE '\'; ``` ###...

    ORACLE操作代码(集合)

    - **转义字符**:如果要在模式匹配中使用通配符作为普通字符,可以使用`ESCAPE`关键字指定一个转义字符。 ```sql SELECT * FROM Pro WHERE Gname LIKE '%\%%' ESCAPE '\'; ``` ### 4. 数据处理 - **处理空值**...

    Oracle SQL培训笔记

    当需要匹配特殊字符时,可以通过 `ESCAPE` 子句来指定转义字符,这样被转义的字符就不会被当作通配符来处理。 - **示例**: 查询 `table` 表中所有以 `A\` 开头的名字。 4. **插入特殊字符(Insert)** - **语法**...

    整理oracle笔记

    - **使用ESCAPE子句**:可以使用`ESCAPE`来指定不同的转义字符。 - 示例:`SELECT ename FROM emp WHERE ename LIKE '%$%%' ESCAPE '$';` ### 结果排序 - **ORDER BY子句**:用于对查询结果进行排序,默认按照...

    oracle ocp 051 175题库个人整合翻译版

    - 使用LIKE子句进行字符串匹配时,如果想要匹配特殊字符(如下划线'_'或百分号'%'),需要使用ESCAPE子句来指定一个转义字符。选项B中,`\`作为转义字符,将下划线'_'视为普通字符进行匹配,因此是正确的。 - 其他...

    ORACLE11g 1Z0-051全真试题 201112

    - 这个选项不正确,因为下划线 `_` 在 `LIKE` 子句中默认用作单字符通配符,需要使用 `ESCAPE` 来定义一个转义字符。 - **B. WHERE prod_id LIKE '%\_D123%' ESCAPE '\'** - 这个选项正确,使用反斜杠 `\` 作为...

    Oracle学习笔记

    12. **自定义转义字符**:`escape '$'` 用于定义查询中的转义字符,例如`select name from dual where name like '%$%%' escape '$';`会找到包含百分号'%'的记录。 13. **排序**:`order by` 子句用于对查询结果...

Global site tag (gtag.js) - Google Analytics