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函数实现。

相关推荐
此刻你6 小时前
常用的 SQL 语句
数据库·sql·oracle
山岚的运维笔记8 小时前
SQL Server笔记 -- 第14章:CASE语句
数据库·笔记·sql·microsoft·sqlserver
中二病码农不会遇见C++学姐10 小时前
SQLiteStudio 下载安装指南
sql
一碗面42110 小时前
SQL性能优化:让数据库飞起来
数据库·sql·性能优化
June bug10 小时前
【高频SQL基础版】排序和分组
数据库·sql
怣5011 小时前
MySQL多表连接完全指南:内连接与外连接超详细讲解
数据库·sql·mysql
Bruk.Liu13 小时前
(LangChain实战12):LangChain中的新型Chain之create_sql_query_chain
数据库·人工智能·sql·langchain
伟大的大威14 小时前
NVIDIA DGX Spark (ARM64/Blackwell) Kubernetes 集群 + GPU Operator 完整部署指南
大数据·spark·kubernetes
码海踏浪15 小时前
从简单到专业在OceanBase中查看SQL是否走索引
数据库·sql·oceanbase
小邓睡不饱耶16 小时前
深度实战:Spark GraphX构建用户信任网络,精准锁定高价值目标用户(含完整案例)
大数据·spark·php