sparksql字符串匹配?
這里對sql常用的一些正則匹配作一些匹配,都是來源別人博客,此處稍作整理和總結(jié)。mark一下
1、sql中有l(wèi)ike 和 rlike,具體區(qū)別
like:
%:匹配零個(gè)及多個(gè)任意字符
_:與任意單字符匹配
[]:匹配一個(gè)范圍
[^]:排除一個(gè)范圍
ESCAPE 關(guān)鍵字定義轉(zhuǎn)義符 WHERE ColumnA LIKE '%5/%%' ESCAPE '/'
like不是正則,而是通配符
rlike:
rlike是正則,正則的寫法與Java一樣。'\'需要使用'\\',例如'\w'需要使用'\\w'
A rlike '\\d+' 匹配一個(gè)或多個(gè)數(shù)字, not A rlike '\\d+' 匹配非數(shù)字
直接在條件里面寫正則表達(dá)式
2、hive sql 中 正則匹配函數(shù)
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正則表達(dá)式的規(guī)則拆分,返回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正則表達(dá)式B的部分替換為C
select regexp_replace("IloveYou","You","") from test1 // Ilove
這里幾個(gè)函數(shù)類似oracle的5個(gè)正則函數(shù),具體可參考o(jì)racle的正則匹配函數(shù)