explode函数「Explode函数用指定的连接符将数组拼接成字符串」
javascript 里面有没有类似PHP的explode 函数
在javascript里面有类似PHP的explode函数的功能:字符串类型String的split方法,split 方法的原型:

stringObj.split([separator[, limit]])
参数说明:
第一个参数separator :可以是字符串或 正则表达式 对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽略该选项,返回包含整个字符串的单一元素数组。
第二个参数limit:该值用来限制返回数组中的元素个数。缺省不限制。
示例,下面的示例演示了 split 方法的用法。
function SplitDemo(){
var s, ss;
var s = "The rain in Spain falls mainly in the plain.";
// 在每个空格字符处进行分解。
ss = s.split(" ");
return(ss);
}
Hive函数之explode和inline
explode和inline函数可以将单列扩展成多列或者多行。
1.explode将单列扩展成多行
explode的参数可以是array还可以是map,如果是map,将生成2个字段,一个是map的键,字段名为key,一个是map的值,字段的名为:value,如下:
explode的限制,如下sql不支持:
2.inline
inline的参数形式:inline(ARRAYSTRUCT[,STRUCT])
inline一般结合lateral view使用
inline 嵌套多个struct,
还可以给inline的字段取别名:
php分割数组函数 split和explode的区别
一句话总结这三个分割函数的
explode用字符串分割,split和 preg_split用正则分割.
效率方面: explode最快, 其次preg_split最后split.
split()函数
用正则表达式来把字符串拆分并返回数组,如果出错则返回false。
用法: split(string $pattern,string $string [,int $limit])
pattern:相应的正则表达式
string:字符串
limit:指定字符串分割的最大数目
例子1:
?php
$expression="3*5+12/6-15";
$pattern="/";
$limit=3;
$parts=split($pattern,$expression,$limit);
print_r($parts);
?
结果:
Array
(
[0] = 3*5+12
[1] = 6-15
)
例子2:
?php
$expression="3*5+12/6-15";
$pattern="[+/]";
$limit=3;
$parts=split($pattern,$expression,$limit);
print_r($parts);
?
结果:
Array
(
[0] = 3*5
[1] = 12
[2] = 6-15
)
preg_split() 函数
用 Perl 兼容正则表达式语法,通常比 split() 更快。
preg_split:用正则表达式分隔字符串
4.3.0版本:增加了标记PREG_SPLIT_OFFSET_CAPTURE.
4.0.5版本:增加了标记PREG_SPLIT_DELIM_CAPTURE.
?php
$str = 'string';
$chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
print_r($chars);
?
以上程序输出样式:
Array
(
[0] = s
[1] = t
[2] = r
[3] = i
[4] = n
[5] = g
)
?php
$str = 'hypertext language programming';
$chars = preg_split('/ /', $str, -1, PREG_SPLIT_OFFSET_CAPTURE);
print_r($chars);
?
以上程序输出样式:
Array
(
[0] = Array
(
[0] = hypertext
[1] = 0
)
[1] = Array
(
[0] = language
[1] = 10
)
[2] = Array
(
[0] = programming
[1] = 19
)
explode()函数
使用一个字符串分割另一个字符串
?php
// 示例 1
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
var_dump($pieces);
?
输出:
Array
(
[0] = one
[1] = two|three|four
)
【数仓】Hive数仓的explode()炸裂函数详解
我们知道数仓不满足第一范式,也就是说数仓中的字段是可再分的,不满足原子性,即DDL可以定义一个字段类型为数组。因此才有了explode()函数,用于给这个字段展开降维。
explode()可以把指定的数组字段拆分降维展开为多行。类似于UDTF函数,作用于单/多个数据行,并且产生多个数据行,以一个表作为输出。
但这样无法同时查询多列,即select name,explode(array) from table会报错。
原因时当使用UDTF函数的时候,Hive只允许对拆分字段进行访问。
要同时查询多列只能:
lateral view explode() 是把要拆分的字段array拆分后以多行存储在t表中的item字段中(当然也可以另起一个临时表)。
如果一行数据有两列需要炸裂展开,可以这样写:
这样得到的行数是 n * length(array1) * length(array2)