常用的Prestosql

本文详细对比了PrestoSQL与HiveSQL在函数使用、通配及正则模糊查询上的差异。Presto中,中文列名需用双引号,CAST转换字符串需用AS,整数除法遵循标准规则。在模糊查询方面,LIKE用于通配,RLIKE或REGEXP_LIKE支持正则,且Presto的REGEXP_LIKE可处理多个匹配条件。此外,文章还提供了一个示例查询来展示这些概念的应用。

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

一、Presto sql 的函数,和 sql(hive sql)基本一样,注意一下一些小细节即可

1.中文列名要用双引号,而不是反引号

2.cast转换时,字符串要 CAST(x AS varchar),而不是string

3.Presto按照标准的方法进行整数除法运算。例如, 7 除以 2 的结果是 3 而不是 3.5 。 对两个整数进行浮点除法运算,需要将其中的一个转为double类型:SELECT CAST(5 AS DOUBLE) / 2

4.日期函数有点不一样,因为Hive可自动识别yyyy-MM-dd的日期格式,而Presto不行,如果想要进行日期计算,需要先parse成Date格式再进行计算,

如日期格式化:format_datetime(parse_datetime(d.record_date,‘yyyy-MM-dd HH:mm:ss’),‘yyyy-MM-dd’)

二、通配模糊查询、正则模糊查询

1、(hive sql)通配、正则模糊查询在语法使用上区别:

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

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

■ (hive sql)两者语法在使用上匹配多个字符串条件的区别:

like 是 字段 like a or like b or like c

rlike 是可以调用方法 rlike(字段,‘a|b|c’)

-- like 用法
where (address like '%北京%' OR address like '%上海%' OR address like '%广州%' OR address like '%深圳%')

-- rlike 用法
where (address rlike '北京|上海|广州|深圳')

2、正则模糊查询 hive-rlike 和 presto-regexp_like

在hive sql中使用的是rlike,在presto sql 中使用的是regexp_like。

举例1:hive sql中使用的是rlike

where address rlike '北京'

-- 多个匹配条件
where (address rlike '北京|上海|广州|深圳')

举例2:presto sql 中使用的是regexp_like

where regexp_like(title,'Unity') 

-- 多个匹配条件
regexp_like(title,'Unity|UE4|UE5') 

--- 忽略大小写
regexp_like(title,'(?i)Unity') 

三、举例

SELECT title "标题", url "url",date "创建时间"
FROM
(
	SELECT title, url,date,create_time,
           ROW_NUMBER() OVER(PARTITION BY title ORDER BY create_time DESC) AS rn
     FROM ods_crawler_table
     WHERE 
	    dt>=:startDate 
     AND
     (cast(substr(date,1,10) as date)) >= CAST(:startDate AS date)
) a
WHERE a.rn=1  
ORDER BY date_parse(date,'%Y-%m-%d %H:%i:%S') DESC




如果本文对你有帮助的话记得给一乐点个赞哦,感谢!

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伟庭大师兄

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值