🚀 个人主页 极客小俊
✍🏻 作者简介:程序猿、设计师、技术分享
🐋 希望大家多多支持, 我们一起学习和进步!
🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注

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函数都会返回正确的字符个数~


"👍点赞" "✍️评论" "收藏❤️"欢迎一起交流学习❤️❤️💛💛💚💚

好玩 好用 好看的干货教程可以点击下方关注❤️微信公众号❤️
说不定有意料之外的收获哦..🤗嘿嘿嘿、嘻嘻嘻🤗!
🌽🍓🍎🍍🍉🍇


1004

被折叠的 条评论
为什么被折叠?



