最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

天天快播:常用的Prestosql

来源:博客园

一、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)) aWHERE a.rn=1  ORDER BY date_parse(date,"%Y-%m-%d %H:%i:%S") DESC

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

关键词: 模糊查询 使用的是 整数除法