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\]
相关推荐
这个DBA有点耶3 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G3 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备3 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远3 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
2601_962218613 天前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法
张洛闻Eren3 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
于平安3 天前
MySQL-触发器
数据库·mysql
白远山3 天前
上海24小时自助健身房解决方案实战指南与经验分享
java·数据库·架构·需求分析
Omics Pro3 天前
斯坦福Nature+Science|广义虚拟细胞基础大模型
数据库·人工智能·算法·机器学习·自然语言处理
2603_965148113 天前
AI+API选品:下一代智能商务助手雏形已现
java·大数据·数据库·人工智能·数据挖掘