Oracle LIKE ESCAPE子句
2013-11-19 15:15
169 查看
LIKE条件指定搜索值包含的匹配模式。
语法
char1是一个字符表达式,例如一个字符列,叫做搜索值。
char2是一个字符表达式,通常是一个字面量,叫做模型。
esc_char是一个字符表达式,通常是一个字面量,叫做转义字符。
如果不指定esc_char,则没有默认转义字符。如果char1,char2或esc_char任何一个为空,则结果是未知的。然而如果指定了转移字符,则必须是一个长度为1字符串。
所有的表达式可以是 CHAR, VARCHAR2, NCHAR, or NVARCHAR2数据类型中的任何一种。如果他们的数据类型不一样,Oracle将他们所有的类型转换成char1的数据类型。
模型可以包含特殊字符匹配模式:
下划线(_):严格匹配一个字符。
百分号(%):可以匹配零个或多个字符。
如果搜索值中包含_或%,则需要使用escape子句。escape子句明确指定一个转义字符。如果搜索值中包行了转移字符本身,则使用两个连续的转义字符表示。例如@是转义字符,则可以使用@@搜索@。
insert into t_char values ('a%b');
insert into t_char values ('abc%');
insert into t_char values ('bc%');
insert into t_char values ('ab%%c');
insert into t_char values ('%abc');
insert into t_char values ('ab/c');
insert into t_char values ('bcd');
insert into t_char values ('ab');
insert into t_char values ('b_c');
insert into t_char values ('ad');
A
------------------------------
bcd
ad
A
------------------------------
a%b
abc%
bc%
ab%%c
%abc
A
------------------------------
ab%%c
A
------------------------------
%abc
A
------------------------------
abc%
bc%
A
------------------------------
ab/c
转移字符可以是长度为1的任意字符。
语法
char1是一个字符表达式,例如一个字符列,叫做搜索值。
char2是一个字符表达式,通常是一个字面量,叫做模型。
esc_char是一个字符表达式,通常是一个字面量,叫做转义字符。
如果不指定esc_char,则没有默认转义字符。如果char1,char2或esc_char任何一个为空,则结果是未知的。然而如果指定了转移字符,则必须是一个长度为1字符串。
所有的表达式可以是 CHAR, VARCHAR2, NCHAR, or NVARCHAR2数据类型中的任何一种。如果他们的数据类型不一样,Oracle将他们所有的类型转换成char1的数据类型。
模型可以包含特殊字符匹配模式:
下划线(_):严格匹配一个字符。
百分号(%):可以匹配零个或多个字符。
如果搜索值中包含_或%,则需要使用escape子句。escape子句明确指定一个转义字符。如果搜索值中包行了转移字符本身,则使用两个连续的转义字符表示。例如@是转义字符,则可以使用@@搜索@。
examples
1.创建t_char表
SQL> create table t_char (a varchar2(30));2.向t_char表中插入数据
insert into t_char values ('abc');insert into t_char values ('a%b');
insert into t_char values ('abc%');
insert into t_char values ('bc%');
insert into t_char values ('ab%%c');
insert into t_char values ('%abc');
insert into t_char values ('ab/c');
insert into t_char values ('bcd');
insert into t_char values ('ab');
insert into t_char values ('b_c');
insert into t_char values ('ad');
3.查询包含d字符
SQL> select * from t_char where a like '%d%';A
------------------------------
bcd
ad
4.查询包含通配符%
SQL> select * from t_char where a like '%/%%' escape '/';A
------------------------------
a%b
abc%
bc%
ab%%c
%abc
5.查询包含两个通配符%
SQL> select * from t_char where a like '%/%/%%' escape '/';A
------------------------------
ab%%c
6.查询以通配符%开始
SQL> select * from t_char where a like '/%%' escape '/';A
------------------------------
%abc
7.查询以通配符%结尾
SQL> select * from t_char where a like '%/%' escape '/';A
------------------------------
abc%
bc%
8.查询包含转义字符
SQL> select * from t_char where a like '%//%' escape '/';A
------------------------------
ab/c
转移字符可以是长度为1的任意字符。
相关文章推荐
- oracle & 和 ' 特殊字符处理 ( like 'GAC/&_%' escape '&'; 这里面的 / 居然将& 转义了 为什么?)
- ORACLE like 下划线 模糊查询 escape
- Oracle中使用escape关键字实现like匹配特殊字符,以及&字符的转义
- oracle 性能优化操作十一: like子句尽量前端匹配
- Oracle中使用escape关键字实现like匹配特殊字符,以及&字符的转义
- Oracle中使用escape关键字实现like匹配特殊字符,以及&字符的转义
- oracle、子句实现递归查询
- Oracle 使用IN子句的非相关子查询
- Oracle “CONNECT BY” 使用Oracle “CONNECT BY”是层次查询子句,一般用于树状或者层次结果集的查询。其语法是:
- oracle中like的优化
- oracle中select及字符串拼接,like,||等
- oracle中转义字,解决like中通配符(%,_)的使用【转贴】
- DB2 LIKE escape-expression
- oracle sql语言模糊查询--通配符like的使用教程详解
- Mybatis中oracle、mysql、db2、sql server的like模糊查询
- oracle 判断字段是否为是数字 regexp_like用法 正则表达式
- sql语句where子句like的用法详解
- oracle instr函数(oracle 用instr 来代替 like)
- Oracle正则表达式函数:regexp_like、regexp_substr、regexp_instr、regexp_replace