1、sql中有like 和 rlike,具體區別
like:
%:匹配零個及多個任意字元
_:與任意單字元匹配
[]:匹配一個範圍
[^]:排除一個範圍
ESCAPE 關鍵字定義轉義符 WHERE ColumnA LIKE "%5/%%" ESCAPE "/"
like不是正則,而是萬用字元
rlike:
rlike是正則,正則的寫法與java一樣。"\"需要使用"\\",例如"\w"需要使用"\\w"
A rlike "\\d+" 匹配一個或多個數字, not A rlike "\\d+" 匹配非數字
直接在條件裡面寫正則表示式
2、hive sql 中 正則匹配函式
regexp 功能和 rlike類似
select count(*) from olap_b_dw_hotelorder_f where create_date_wid regexp "\\d{8}"
select count(*) from olap_b_dw_hotelorder_f where create_date_wid rlike "\\d{8}"
regexp_extract(string subject, string pattern, int index) 將字串subject按照pattern正則表示式的規則拆分,返回index指定的字元
select regexp_extract("IloveYou","(I)(.*?)(You)",1) from test1 limit 1 // 1 匹配 I,2匹配 love,3匹配 You
regexp_replace(string A, string B, string C) 將字串A中的符合Java正則表示式B的部分替換為C
select regexp_replace("IloveYou","You","") from test1 // Ilove
這裡幾個函式類似oracle的5個正則函式,具體可參考oracle的正則匹配函式
1、sql中有like 和 rlike,具體區別
like:
%:匹配零個及多個任意字元
_:與任意單字元匹配
[]:匹配一個範圍
[^]:排除一個範圍
ESCAPE 關鍵字定義轉義符 WHERE ColumnA LIKE "%5/%%" ESCAPE "/"
like不是正則,而是萬用字元
rlike:
rlike是正則,正則的寫法與java一樣。"\"需要使用"\\",例如"\w"需要使用"\\w"
A rlike "\\d+" 匹配一個或多個數字, not A rlike "\\d+" 匹配非數字
直接在條件裡面寫正則表示式
2、hive sql 中 正則匹配函式
regexp 功能和 rlike類似
select count(*) from olap_b_dw_hotelorder_f where create_date_wid regexp "\\d{8}"
select count(*) from olap_b_dw_hotelorder_f where create_date_wid rlike "\\d{8}"
regexp_extract(string subject, string pattern, int index) 將字串subject按照pattern正則表示式的規則拆分,返回index指定的字元
select regexp_extract("IloveYou","(I)(.*?)(You)",1) from test1 limit 1 // 1 匹配 I,2匹配 love,3匹配 You
regexp_replace(string A, string B, string C) 將字串A中的符合Java正則表示式B的部分替換為C
select regexp_replace("IloveYou","You","") from test1 // Ilove
這裡幾個函式類似oracle的5個正則函式,具體可參考oracle的正則匹配函式