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"