spark sql 中LENGTH 和 SIZE 函数介绍

目录

  • 前言
  • 函数介绍
    • LENGTH函数
    • SIZE函数
  • 实战

前言

我将为您详细介绍 Spark SQL 中的 LENGTH 和 SIZE 函数。它们虽都用于"计量",但处理的数据类型和目的截然不同。

简单的区分是:
LENGTH 用于处理字符串,计算其长度(字符数)。
SIZE 用于处理集合类型(如数组Array、映射Map),计算其元素或键值对的数量。

函数介绍

LENGTH函数

1.语法

LENGTH 函数(或 len,两者同义)用于计算一个字符串的长度,返回字符的个数

sql 复制代码
LENGTH(str) 

2.示例

sql 复制代码
select 
LENGTH('Spark') as ln1	 --5
,LENGTH('')  as ln2--0
,LENGTH(NULL) as ln3 --null

SIZE函数

SIZE 函数用于计算集合数据类型(Array, Map)中的元素个数或键值对数量5。它不能用于字符串。

  1. 语法
sql 复制代码
SIZE(collection)

2.示例

sql 复制代码
select  
SIZE(ARRAY(1, 5, 9)) as sz1 ---3
,SIZE(ARRAY())	as sz2 --0
,SIZE(MAP('k1', 'v1', 'k2', 'v2')) as sz3 ---2
,SIZE(NULL)	as sz5 ---- -1

备注:

size(null)值为-1,可以将 -1 理解为一个明确的标记,表示"无法计算大小的无效输入或缺失值"

实战

现在有一字段:str,以逗号分割,想统计str逗号分开的个数

sql 复制代码
----方法1
with temp_1 as (
	select array('a','b','d','efg') as str
)
select 
size(str) as sz --4
from  temp_1

--方法2
with temp_0 as (
select  'a,b,d,efg' as str
)

select size(split(str, ',')) as sz ---4
from  temp_0

---方法3
with temp_0 as (
select  'a,b,d,efg' as str
)

SELECT 
  LENGTH(str) - LENGTH(REPLACE(str, ',', '')) +1 as ln ---4 
FROM temp_0;

分析:方法1和方法2,都是通过size函数来实现,需要先转换成数组,方法3是通过length函数实现。

相关推荐
一江寒逸2 小时前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
一江寒逸4 小时前
零基础从入门到精通MySQL(上篇):筑基篇——吃透核心概念与基础操作,打通SQL入门第一关
数据库·sql·mysql
流觞 无依5 小时前
DedeCMS plus/download.php SQL注入漏洞修复教程
sql·php
不会写DN5 小时前
SQL 多表操作全解
数据库·sql
瀚高PG实验室8 小时前
ETL中,分区表子表未及时收集统计信息,导致sql执行耗时很长
数据库·数据仓库·sql·etl·瀚高数据库
星川水月8 小时前
SQL 开窗函数排序详解
数据库·sql
VIV-8 小时前
医院病房管理系统的数据库设计(SQL Server)
数据库·sql·sqlserver
摆烂z10 小时前
spEL语法替换sql值
java·数据库·sql
chaofan98010 小时前
Meta Muse Spark 深度解构:并联智能体架构与开发者接入实战指南
大数据·架构·spark