官方文档
like的使用详解
语法解释
select A (not) LIKE B
1.表示是否可以用B完全匹配A的内容,返回结果是布尔类型(true或false)
2.操作类型是String,其中A是待验证的字符串,B是表达式,B中可以用简单的匹配符号(_,%等,_表示任意单个字符,%表示任意数量的字符)
3.like的匹配是按字符从左向右逐一匹配的,即使只有一个字符不同,也返回false;
4.A或B任意为null,则返回null值;
5.否定比较时候用NOT A LIKE B(使用A NOT LIIKE B也可以),结果与like的结果时相对的
示例
select 'abcde' like 'abc'; ---false
select 'abcde' like '_bc%'; ---true
select 'abcde' not like 'abc'; ---false
select 'abcde' like null; -----null
rlike的使用详解
语法解释
select A (not) rLIKE B
1.A rlike B,表示b是否在A里面,而 A like B 表示B是否是A;
2.B中的表达式可以使用java中的正则表达式;
3.A或B任意为null,则返回null值
4.否定比较时候用NOT A RLIKE B(使用A NOT RLIIKE B也可以),结果与rlike的结果时相对的;
示例:
select 'football' rlike 'foo'; ---true
select 'football' rlike '^f\\D+l$'; ---true
select 'football' rlike '^f.*'; ---true
select 'football' rlike '.*l$'; ---true
select '123456' rlike '^\\d+$' ---true
select '123456' rlike '^1\\d{3,4}6$' ---true
select '123456' rlike '^1[0-9]{3,4}6$' ---true
select '12abc6' rlike '^12[a,b,c]{3,4}6$' --true
select '123456' not rlike '^1[0-9]{3,4}6$' ---false
select null rlike '^12[a,b,c]{3,4}6$' ---null
regexp的使用详解
和rlike相同;
like,rlike ,regexp 等多用于where 条件判断中;
示例
select user ,name,phone from account where phone regexp '^156[0-9]{7,8}0$'; ---匹配电话号码156开头,0结尾的
select name from tmp.testregexp WHERE name not REGEXP '[u0391-uFFE5]'; ----匹配name是纯中文(不含有英文和数字的)
select name from tmp.testregexp where name regexp '[\\u4E00-\\u9FFF]+'; ---匹配name中含有中文的(只要含有汉字都可以)
select name from tmp.testregexp where name not regexp '[\\u4E00-\\u9FFF]+'; ---匹配name中不含有中文的(含一个汉字都不可以)
select
name
from (
select
regexp_replace (trim(name),'\\n|\\t|\\s|\\r','') as name
from tmp.testregexp) t
where name regexp '[\\u4E00-\\u9FFF]+' ---先对name中换行符替换为空,然后匹配name中含有中文的(只要含有汉字都可以)
select name from tmp.testregexp where name regexp '文杰' ----匹配name中含有文杰两个字的,可能是陈文杰,可能是文杰李,可能是陈李文杰,也可能就是文杰