Oracle LENGTH函数详解

Oracle的LENGTH函数是计算字符串长度的核心工具。不过要小心,它和它的"家族成员"(如LENGTHB)在计算单位上有所区别,简单使用容易出错。下面会为你详细拆解它们的区别和用法。

📏 先搞懂:LENGTH vs LENGTHB

它们最核心的区别在于单位不同,LENGTH 计算的是"字符数",LENGTHB 计算的是"字节数"。在处理英文等单字节字符时,两者通常结果一致;但在处理中文等多字节字符时,两者的结果就会有明显差别了。

计算方式 适用场景 关键特性 适用数据类型
LENGTH 计算字符个数,与字符集无关 以"字符"为逻辑单位返回长度 CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, NCLOB
LENGTHB 计算字节数,常用于处理中文字符 以"字节"为物理单位返回长度 CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, NCLOB (但多字节字符集下的LOB有限制)
LENGTHC 处理Unicode 全字符 使用Unicode完全字符 CHAR, VARCHAR2, NCHAR, NVARCHAR2 (不支持CLOB或NCLOB)
LENGTH2 处理UCS2编码 使用UCS2字符集编码点 CHAR, VARCHAR2, NCHAR, NVARCHAR2 (不支持CLOB或NCLOB)
LENGTH4 处理UCS4编码 使用UCS4字符集编码点 CHAR, VARCHAR2, NCHAR, NVARCHAR2 (不支持CLOB或NCLOB)

🚀 常见用法与实战

1. 基础示例

直接理解函数的行为。

sql

复制代码
--查询常量字符串的长度
复制代码
SELECT LENGTH('Hello Oracle') AS str_len FROM DUAL;
复制代码
--返回: 12
复制代码
复制代码
--查询表中某列的长度(如员工名字)
复制代码
SELECT last_name, LENGTH(last_name) AS len FROM employees;
2. 字符集编码差异(典型案例)

这是实际工作中最容易混淆的点,通过对比可以清晰看到多字节字符的影响。

sql

复制代码
--对比中文字符串的长度
复制代码
SELECT LENGTH('你好世界') AS char_len, --按字符计算,返回4
复制代码
       LENGTHB('你好世界') AS byte_len --按字节计算,若数据库是UTF-8,则返回12
复制代码
FROM DUAL;
复制代码
--根据字符集,如UTF-8(每个汉字3字节)或GBK(每个汉字2字节),结果不同\[reference:5\]
相关推荐
聆听。。花开雨落7 小时前
mybatis的typeHandler 作用
数据库·mybatis
pxzsky7 小时前
PG17数据库安装中分分词插件:pg_jieba
数据库·postgresql·pg_jieba
她说可以呀8 小时前
Redis哨兵
数据库·redis·bootstrap
霸道流氓气质8 小时前
KMS 密钥管理服务(Key Management Service)原理与实践
linux·服务器·数据库
kirs_ur8 小时前
CXL(Compute Express Link)— 内存扩展的未来
服务器·数据库·性能优化
MonolithIoT10 小时前
实战方案|设备备件无人值守仓库:连续化产线运维备件 7×24 小时数字化管控方案
运维·网络·数据库
瞬间&永恒~10 小时前
【MySQL】4-6:在同一个主机上使用 systemd 运行多个 MySQL服务器
服务器·数据库·mysql
心机之蛙qee10 小时前
Redis的主从、哨兵及集群
数据库·redis·缓存
gwf21611 小时前
磨损均衡算法(Wear Leveling)——SSD如何让每块闪存“公平退休“?
运维·数据库·人工智能·python·嵌入式硬件·算法·智能硬件