length:获取字符串/二进制长度
速查结论
length(expr) 是 Spark SQL 中用于获取字符串字符数或二进制字节数的函数。注意:字符串长度包含末尾空格,这与某些数据库的行为不同。另有 char_length 和 character_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真题
