🚀 个人主页 极客小俊
✍🏻 作者简介:程序猿、设计师、技术分享
🐋 希望大家多多支持, 我们一起学习和进步!
🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注
LEN() 与 DATALENGTH() 函数
定义
LEN() 函数
可以用来返回文本字段中值的长度!
语法规则
SELECT LEN(column_name) FROM table_name
举个栗子
那么现在我们在 SELECT 语句
中,我们使用 LEN() 函数
获取一下每个员工名字长度!
SELECT LEN(lastName) as '名称长度' FROM persons;
如图
注意: 编码类型与LEN函数的关系
这里的LEN 函数
计算的是字符数
,而不是字节数
,并且尾部空格不被计算在内
如果字符串表达式为 NULL
,那么LEN 函数
将返回 NULL
编码类型
与LEN函数
这主要体现在处理不同字符集
(如单字节字符集
和双字节字符集
)时的行为差异
单字节字符集
比如: ASCII
在这种编码下,每个字符
通常占用一个字节
LEN函数
返回的字符数与这种编码的字节数通常是一致的(不考虑尾部空格)!
双字节字符集
比如Unicode
那么在这种编码下,某些字符串,例如中文字符
可能占用两个或更多字节
然而,LEN函数
仍然是返回字符数
,而不是字节数
这意味着对于包含双字节字符
的字符串
,LEN函数
返回的字符数
可能少于
其占用的字节数
举个栗子
DECLARE @String NVARCHAR(10)
SET @String = '你好'
SELECT LEN(@String) AS '字符数'
如图
这里的@String
是一个包含中文字符你好
的 NVARCHAR 类型
的变量, NVARCHAR 类型
支持Unicode编码
,所以 你好
这个字符串
中的每个字符
都可能占用两个字节
,而LEN(@String)
返回的是字符数
,也就是两个,而不是字节数
在看一个对比的案例
DECLARE @SingleByteString VARCHAR(10);
DECLARE @DoubleByteString NVARCHAR(10);
SET @SingleByteString = 'Hello';
SET @DoubleByteString = '你好';
SELECT LEN(@SingleByteString) AS '单字节长度'; -- 返回 5
SELECT LEN(@DoubleByteString) AS '双字节长度'; -- 返回 2
如图
当然如果我们想获取当前这个字符串
的字节长度
,可以使用 DATALENGTH 函数
了!
如下
DECLARE @String NVARCHAR(10)
SET @String = '你好'
SELECT LEN(@String) AS '字符数'
SELECT DATALENGTH(@String) AS '字节长度';
如图
结果返回4
,因为 你好
中的每个字符占用两个字节
,而 2 * 2 = 4 个字节
在看一个案例
DECLARE @SingleByteString VARCHAR(10);
DECLARE @DoubleByteString NVARCHAR(10);
SET @SingleByteString = 'Hello';
SET @DoubleByteString = '你好';
SELECT LEN(@SingleByteString) AS '单字节字符数'; -- 返回 5
SELECT LEN(@DoubleByteString) AS '双字节字符数'; -- 返回 2
SELECT DATALENGTH (@SingleByteString) AS '单字节的字节占用长度';
SELECT DATALENGTH (@DoubleByteString) AS '双字节的字节占用长度';
如图
因此,无论处理的是单字节字符集
还是多字节字符集
例如Unicode
,LEN函数
都会返回正确的字符个数。如果需要了解字符串
所占用的字节数
,那么应该使用DATALENGTH函数
而不是LEN函数
记住了!
所以说虽然 LEN 函数
在SQL Server
中用于返回字符串的字符数
,并不直接受编码类型的影响
但是如果你了解字符串
的编码类型
对于理解 LEN 函数
返回的结果与字节长度
之间的关系就会很有帮助了!
尤其是在处理多语言环境
下的数据时,我们更加应该结合使用 LEN
和 DATALENGTH
函数,以确保对字符串数据的全面理解和把控!
总之一句话就是不管是单字节
还是双字节
在SQL Server 2000中LEN函数
都会返回正确的字符个数~
"👍点赞" "✍️评论" "收藏❤️"
欢迎一起交流学习❤️❤️💛💛💚💚
好玩 好用 好看
的干货教程可以点击下方关注❤️微信公众号❤️
说不定有意料之外的收获哦..🤗嘿嘿嘿、嘻嘻嘻🤗!
🌽🍓🍎🍍🍉🍇