跳到主要内容

length:获取字符串/二进制长度

速查结论

length(expr) 是 Spark SQL 中用于获取字符串字符数或二进制字节数的函数。注意:字符串长度包含末尾空格,这与某些数据库的行为不同。另有 char_lengthcharacter_length 作为同义函数。

语法

length(expr)

参数说明

参数说明
expr字符串或二进制表达式

返回值:字符串的字符长度(INT)或二进制数据的字节数(INT)。字符串长度包含末尾空格。

Since: 1.5.0

示例

字符串长度

-- 基础用法(包含末尾空格)
SELECT length('Spark SQL ');
-- 结果: 10

-- char_length 是同义函数
SELECT CHAR_LENGTH('Spark SQL ');
-- 结果: 10

SELECT CHARACTER_LENGTH('Spark SQL ');
-- 结果: 10

二进制长度

-- 二进制的字节数
SELECT length(x'537061726b2053514c');
-- 结果: 9

中文字符长度

-- 中文字符按字符计数
SELECT length('你好世界');
-- 结果: 4

length vs char_length vs bit_length 对比

函数返回内容类型
length(expr)字符串字符数 / 二进制字节数INT
char_length(expr)与 length 完全相同INT
character_length(expr)与 length 完全相同INT

常见报错与避坑指南

末尾空格计入长度

length 会将末尾空格计入长度,在进行数据校验时需注意。

-- 末尾空格导致长度不符合预期
SELECT length('abc ');
-- 结果: 6(不是 3)

-- 如需排除末尾空格,先 trim
SELECT length(trim('abc '));
-- 结果: 3
📱关注公众号

「数据仓库技术」文章同步更新,不错过每一篇干货

微信公众号二维码
💬加群交流

备注「数据仓库技术」加入社群,每日一道大厂SQL真题

交流微信二维码

你可能还想看