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'