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\]
相关推荐
云和数据.ChenGuang1 小时前
大模型厂商常用的数据库有哪些?
数据库·人工智能·pytorch·深度学习·numpy
不吃土豆的马铃薯1 小时前
高并发服务器数据库连接池设计详解
服务器·网络·数据库·c++·mysql
Nontee2 小时前
新手数据库进阶:大白话图解MySQL的“官方档案”——Binlog
数据库·mysql
倒流时光三十年2 小时前
PostgreSQL VALUES 列表详解
数据库·postgresql
Nightwish52 小时前
Oracle 数据库巡检检查清单
数据库·oracle·ffmpeg
吴声子夜歌2 小时前
SQL经典实例——插入、更新和删除
数据库·sql
基德爆肝c语言2 小时前
MySQL:数据库基础
数据库·mysql
倒流时光三十年2 小时前
PostgreSQL GREATEST 条件表达式函数详解
服务器·数据库·postgresql
山峰哥2 小时前
VBA数据结构之争:Dictionary vs Collection,性能差3倍!
服务器·数据结构·数据库·windows·sql·算法·哈希算法