mysql 拼接字串
mysql拼接字串是什麼呢?不知道的小夥伴來看看小編今天的分享吧!
一、Oracle資料庫按分隔符拆分字串
1、應用函式
REGEXP_SUBSTR
2、語法
REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)
3、引數解釋
__srcstr :需要進行正則處理的字串
__pattern :進行匹配的正則表示式
__position :起始位置,從第幾個字元開始正則表示式匹配(預設為1)
__occurrence :標識第幾個匹配組,預設為1
__modifier :模式('i'不區分大小寫進行檢索;'c'區分大小寫進行檢索。預設為'c'。)
4、測試SQL
select regexp_substr('1,2,3','[^,]+',1,1) result from dual;
執行結果:
1select regexp_substr('1,2,3','[^,]+',1,1) result from dual;
5、REGEXP_SUBSTR+CONNECT BY 使用
按分隔符拆分字串+CONNECT BY 動態引數
測試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資料庫按分隔符拆分字串
1,split()函式
定義
split()函式是用於切分資料,也就是將一串字串切割成了一個數組
語法
語法:split(string str, string pat)
返回值:陣列型別array
引數解釋
string str :待分割字串
string pat:分割符
測試SQL:
select split ('wo,shi,xiao,ming',',');
執行結果:
["wo","shi","xiao","ming"]
2、explode函式
定義
explode()函式是用於打散行的函式,將一行的資料拆分成一列
語法
explode(array/map型別)
select explode(array_col) as new_col from table_name
測試SQL:
select explode(array("wo","shi","xiao","ming")) as word;
執行結果:
wo
shi
xiao
ming
explode函式的侷限性
不能關聯原有的表中的其他欄位
不能與group by、cluster by、distribute by、sort by聯用
不能進行UDTF巢狀
引數只能是兩種型別
一個select後面只能獲得一個explode產生的檢視,如果要顯示多個列,則需要將多個檢視合併。
3、lateral view
定義:
Lateral View用於和UDTF函式(explode、split)結合來使用
首先通過UDTF函式拆分成多行,再將多行結果組合成一個支援別名的虛擬表。虛擬表相當於再和主表關聯, 從而達到新增“UDTF生成的欄位“以外欄位的目的, 即主表裡的欄位或者主表運算後的欄位。
主要解決在select使用UDTF做查詢過程中,查詢只能包含單個UDTF,不能包含其他欄位、以及多個UDTF的問題
語法:
lateral view UDTF(expression) table_view as new_column;
引數解釋:
UDTF(expression):複合邏輯規則的UDTF函式,最常用的explode
table_view : 對應的虛擬表的表名
new_col: 虛擬表裡存放的有效欄位
測試:
select col_type -- 已拆分資料
from table_name
lateral view explode(split(col,',')) t as col_type --col 為需要拆分的欄位
以上就是小編今天的分享了,希望可以幫助到大家。