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\]
相关推荐
南墙上的石头1 小时前
麒麟 V10 重装人大金仓 V8R6 踩坑实录(含 MySQL 兼容模式)
数据库·mysql
画中有画2 小时前
论向量数据库在项目中的应用
数据库
spider_xcxc3 小时前
Redis 数据库高质量实践指南(一)
运维·数据库·redis·oracle·云计算
l1t3 小时前
在linux和windows中解决duckdb 1.6dev版本输出执行计划报错问题
linux·运维·数据库·windows·duckdb
执子手 吹散苍茫茫烟波4 小时前
RC 隔离级别下 MySQL InnoDB 死锁典型案例
数据库·mysql
落叶-IT4 小时前
Java异常处理深度实战教程:异常传播的失败场景分析
数据库·oracle
执子手 吹散苍茫茫烟波5 小时前
常见的数据库隔离级别以及企业里常用的是什么方案
数据库
Database_Cool_6 小时前
数据库慢查询优化首选方案:阿里云 RDS 性能洞察+自动诊断
数据库·人工智能·阿里云
YOU OU6 小时前
Redis初识
数据库·redis·缓存
长孙豪翔6 小时前
在.net中读写config文件的各种方法
java·数据库·.net