HIVE Presto like和rlike

本文深入探讨了SQL中like与rlike的区别,like使用通配符进行模糊匹配,而rlike采用正则表达式,提供了更复杂的匹配模式。文章通过实例展示了如何在查询中使用这些功能,包括匹配特定模式、组合条件以及在不同数据库系统中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

like与rlike的区别:

like不是正则,是通配符。这个通配符可以看一下SQL的标准,例如%代表任意多个字符。

rlike是正则,正则的写法与java一样。'\'需要使用'\\',例如'\w'需要使用'\\w'

--NAME中包含数字的

select name from wlh_dm_sz_3 where rlike (name,'[0-9]') limit 100

select name from wlh_dm_sz_3 where name rlike '[0-9]' limit 100 结果相同

--NAME中以数字开头的

select name from wlh_dm_sz_3 where name rlike '^[0-9].*' limit 100

--NAME中包含A B C的

select name from wlh_dm_sz_3 where rlike (name,'A|B|C') limit 100

hive不提供GROUP_CONCAT函数,所以需要使用其他方法代替,我们可以使用CONCAT_WS()函数代替,如下

SELECT 
	category, 
	CONCAT_WS("\; ", COLLECT_LIST(name)) 
FROM 
	test_group 
GROUP BY 
	category     

hive 中没有not like 而是用 not col_name like '%a%' 或者not col_name rlike 'a' 

--多个条件

如查找name字段中含有 Li 和 Jin的信息

select * from emp where name rlike '.*(Li|Jin).*';

点号.:表示和任意的字符匹配

星号*:表示重复“左边的字符串”零次到无数次

表达式(x|y):表示和x或者y匹配

presto中类似rlike实现

SELECT * FROM access WHERE regexp_like(method, 'GET|POST|PUT|DELETE')

Presto分页查询:

SELECT * FROM (SELECT ROW_NUMBER() over(ORDER BY T.id) as Row,T.* FROM table as T where date_month='2019-12') TT 
WHERE TT.Row BETWEEN 1 AND 10;

order by任意字段都可以。between 和 and 分页可以按照下面这个公式  between :( currentPage- 1)*pageSize+1 ,and : (currentPage*pageSize)

presto对关键字转译使用双引号,例如

select * from catalog.schema."order"

date_format

date_format(behavior_datetime,'%Y-%m-%d')>= '2018-12-31'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值