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 小时前
医疗器械设备研发:多人同时操作 SolidWorks,怎样依靠单台服务器替代多工作站
运维·服务器·网络·数据库·制造
知行合一。。。6 小时前
RAG--03--Milvus基本用法
数据库·oracle·milvus
TDengine (老段)7 小时前
TDengine 线程模型 — 网络、调度、执行
大数据·数据库·物联网·制造·时序数据库·tdengine·涛思数据
上学的小垃圾8 小时前
01-数据库系统概述
数据库
二进制漫游记8 小时前
FastAPI项目集成 Qdrant向量数据库+阿里云Embedding完整实战(工具封装+业务调用)
数据库·python·阿里云·embedding
2501_928996228 小时前
GPT-4o换DeepSeek迁移成本多少?中科热备解析API聚合平台技术账本
前端·数据库·人工智能
泡干脆面就番茄11 小时前
MySQL_子查询_分页查询与联合查询详解
数据库·mysql
devpotato12 小时前
缓存与数据库更新顺序不一致问题
java·数据库·redis
天若有情67312 小时前
Node+MySQL小型全栈笔记项目实战课程分享
数据库·笔记·mysql
wxwx_bscxy32212 小时前
基于springboot宠物领养系统的设计与实现
数据库·spring boot·后端·spring·宠物