区别like和rlike

区别like和rlike

hive的内置函数
hive数据倾斜解决

脚本中遇见rlike,特此区别一下like和rlike
like 支持通配符:eg:"%“代表多字符
rlike支持的是正则表达式 :”.*"代表多字符

LIKE

语法格式为A [NOT] LIKE B,B是sql下的简单正则表达式,也叫通配符模式,如_匹配一个字符,%可以匹配任意多个字符,A会对表达式B做匹配,如果通过返回TRUE,如果不通过则返回FALSE,举个例子:
SELECT name LIKE ‘%Alice’ FROM table1;
表示选择name列内以ALICE作为结尾的数据

RLIKE

语法格式为A [NOT] RLIKE B,基于java的正则表达式接口实现,如果A中有与B匹配则返回TRUE,否则返回FALSE;
举例对比:
select “aaaaa” rlike “.aaa.” from test_struct limit 10;
OK
true
select “aaaaa” rlike “^aaa” from test_struct limit 10;
OK
true

select “aaaaa” rlike “%aaa%” from test_struct limit 10;
OK
false

区别

通配符匹配的是整个列,比如helloworld就无法和’world’通配,但是正则表达式则是在列值内进行匹配,helloworld就可以和’world’匹配返回TRUE

另外,引入RLIKE该操作符的目的是引入正则表达式这样一个更加强大的语言来匹配条件,举个简单的对比例子

A RLIKE ‘.(Alice|Ben).
匹配包含Alice或者Ben的字段,使用LIKE的话需要用两个LIKE来做组合,下面是使用LIKE改成相同效果
A LIKE ‘%Alice%’ OR A LIKE ‘%Ben%’

你可能感兴趣的:(hive专栏)