Hive中SQL通配符like与正则匹配rlike(regexp)的区别

Hive中SQL通配符like与正则匹配rlike(regexp)的区别

Hive 中可以用 like 和 rlike 进行模糊匹配,like 采用的是 SQL 通配符,而 rlike (regexp)采用的是正则匹配。

1、like

% 代替 0 或多个字符

_ 代替一个字符

举个例子:

-- 返回值为 TRUE

spark-sql> select 'aaa' like '%a%';

true

Time taken: 2.04 seconds, Fetched 1 row(s)

-- 返回值为 TRUE

spark-sql> select 'aaabb' like '%a%';

true

Time taken: 0.123 seconds, Fetched 1 row(s)

2、rlike

rlike 采用正则表达式,以下总结几个常用的

\: 转义用,序列 \ 匹配

^: 匹配输入字符串开始的位置

$: 匹配输入字符串结尾的位置

*: 零次或多次匹配前面的字符或子表达式

?: 零次或一次匹配前面的字符或子表达式

x|y: 匹配 x 或 y

[xyz]: 字符集。匹配包含的任一字符

\w: 匹配任何字类字符,包括下划线

.: 匹配所有单个字符

此外,还可以用 regexp 替换 rlike,用 not regexp 替换 not rlike ,效果一样。

-- 返回值为 TRUE

select 'hello' regexp '^he'

-- 返回值为 FALSE

select 'hello' regexp '^e'

-- 返回值为 TRUE

select 'hello' regexp 'llo$'

-- 返回值为 TRUE

select 'hello' regexp 'hello|world'

-- 返回值为 TRUE

select 'hello' regexp 'h[\w]llo'

-- 返回值为 TRUE

select 'hello' rlike 'h.llo'

3、示例

spark-sql> select 'aaa' like '_a_';

true

Time taken: 1.777 seconds, Fetched 1 row(s)

spark-sql> select 'aaab' like '_a_';

false

Time taken: 1.519 seconds, Fetched 1 row(s)

spark-sql> select 'hello' regexp '^he';

true

Time taken: 1.538 seconds, Fetched 1 row(s)

spark-sql> select 'hello' regexp '^e' ;

false

Time taken: 1.474 seconds, Fetched 1 row(s)

spark-sql> select 'hello' regexp 'llo$';

true

Time taken: 1.62 seconds, Fetched 1 row(s)

spark-sql> select 'hello' regexp 'hello|world';

true

Time taken: 1.269 seconds, Fetched 1 row(s)

spark-sql> select 'hello' regexp 'h[\\w]llo' ;

true

Time taken: 1.607 seconds, Fetched 1 row(s)

spark-sql> select 'hello' rlike 'h[\\w]llo' ;

true

Time taken: 0.098 seconds, Fetched 1 row(s)

spark-sql> select 'hello' rlike 'h.llo' ;

true

Time taken: 0.086 seconds, Fetched 1 row(s)

相关推荐

抑郁症能活多久
365地址

抑郁症能活多久

🕒 07-12 👁️ 9224
热门必备k歌软件推荐
beat365正版唯一官网

热门必备k歌软件推荐

🕒 07-05 👁️ 1369