...">
瀏覽量:159次
mysql拼接字符串是什么呢?不知道的小伙伴來看看陽泰小編今天的分享吧!
一、Oracle數(shù)據(jù)庫按分隔符拆分字符串
1、應(yīng)用函數(shù)
REGEXP_SUBSTR
2、語法
REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)
3、參數(shù)解釋
__srcstr ? ? :需要進(jìn)行正則處理的字符串
__pattern ? ?:進(jìn)行匹配的正則表達(dá)式
__position ? :起始位置,從第幾個(gè)字符開始正則表達(dá)式匹配(默認(rèn)為1)
__occurrence :標(biāo)識第幾個(gè)匹配組,默認(rèn)為1
__modifier ? :模式('i'不區(qū)分大小寫進(jìn)行檢索;'c'區(qū)分大小寫進(jìn)行檢索。默認(rèn)為'c'。)
4、測試SQL
select regexp_substr('1,2,3','[^,]+',1,1) result from dual;
運(yùn)行結(jié)果:
1select regexp_substr('1,2,3','[^,]+',1,1) result from dual;
5、REGEXP_SUBSTR+CONNECT BY 使用
按分隔符拆分字符串+CONNECT BY 動(dòng)態(tài)參數(shù)
測試SQL:
SELECT?
REGEXP_SUBSTR ('1,2,3,4,5', '[^,]+', 1,ROWNUM)?
FROM dual?
CONNECT BY ROWNUM <= LENGTH( '1,2,3,4,5' ) - LENGTH(regexp_replace('1,2,3,4,5', ',', '' )) + 1
二、hive數(shù)據(jù)庫按分隔符拆分字符串
1,split()函數(shù)
定義
split()函數(shù)是用于切分?jǐn)?shù)據(jù),也就是將一串字符串切割成了一個(gè)數(shù)組
語法
語法:split(string str, string pat)
返回值:數(shù)組類型array
參數(shù)解釋
string str :待分割字符串
string pat:分割符
測試SQL:
select split ('wo,shi,xiao,ming',',');
運(yùn)行結(jié)果:
["wo","shi","xiao","ming"]
2、explode函數(shù)
定義
explode()函數(shù)是用于打散行的函數(shù),將一行的數(shù)據(jù)拆分成一列
語法
explode(array/map類型)
select explode(array_col) as new_col from table_name
測試SQL:
select explode(array("wo","shi","xiao","ming")) as word;
運(yùn)行結(jié)果:
wo
shi
xiao
ming
explode函數(shù)的局限性
不能關(guān)聯(lián)原有的表中的其他字段
不能與group by、cluster by、distribute by、sort by聯(lián)用
不能進(jìn)行UDTF嵌套
參數(shù)只能是兩種類型
一個(gè)select后面只能獲得一個(gè)explode產(chǎn)生的視圖,如果要顯示多個(gè)列,則需要將多個(gè)視圖合并。
3、lateral view
定義:
Lateral View用于和UDTF函數(shù)(explode、split)結(jié)合來使用
首先通過UDTF函數(shù)拆分成多行,再將多行結(jié)果組合成一個(gè)支持別名的虛擬表。虛擬表相當(dāng)于再和主表關(guān)聯(lián), 從而達(dá)到添加“UDTF生成的字段“以外字段的目的, 即主表里的字段或者主表運(yùn)算后的字段。
主要解決在select使用UDTF做查詢過程中,查詢只能包含單個(gè)UDTF,不能包含其他字段、以及多個(gè)UDTF的問題
語法:
lateral view UDTF(expression) table_view as ?new_column;
參數(shù)解釋:
UDTF(expression):復(fù)合邏輯規(guī)則的UDTF函數(shù),最常用的explode
table_view : 對應(yīng)的虛擬表的表名
new_col: 虛擬表里存放的有效字段
測試:
select col_type? ?-- 已拆分?jǐn)?shù)據(jù)
from table_name
lateral view explode(split(col,',')) t as col_type? ?--col 為需要拆分的字段
[聲明]本網(wǎng)轉(zhuǎn)載網(wǎng)絡(luò)媒體稿件是為了傳播更多的信息,此類稿件不代表本網(wǎng)觀點(diǎn),本網(wǎng)不承擔(dān)此類稿件侵權(quán)行為的連帶責(zé)任。故此,如果您發(fā)現(xiàn)本網(wǎng)站的內(nèi)容侵犯了您的版權(quán),請您的相關(guān)內(nèi)容發(fā)至此郵箱【779898168@qq.com】,我們在確認(rèn)后,會(huì)立即刪除,保證您的版權(quán)。
官網(wǎng)優(yōu)化
整站優(yōu)化
渠道代理
400-655-5776