【你也能从零基础学会网站开发】 SQL Server 2000中的LEN()与DATALENGTH() 函数你理解了吗? 其中的秘密已泄露,禁止大肆传播!

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

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 '双字节的字节占用长度';

如图


因此,无论处理的是单字节字符集还是多字节字符集 例如UnicodeLEN函数都会返回正确的字符个数。如果需要了解字符串所占用的字节数,那么应该使用DATALENGTH函数而不是LEN函数 记住了!

所以说虽然 LEN 函数SQL Server中用于返回字符串的字符数,并不直接受编码类型的影响
但是如果你了解字符串编码类型对于理解 LEN 函数返回的结果与字节长度之间的关系就会很有帮助了!

尤其是在处理多语言环境下的数据时,我们更加应该结合使用 LENDATALENGTH 函数,以确保对字符串数据的全面理解和把控!

总之一句话就是不管是单字节还是双字节 在SQL Server 2000中LEN函数都会返回正确的字符个数~

"👍点赞" "✍️评论" "收藏❤️"

大家的支持就是我坚持下去的动力!

如果以上内容有任何错误或者不准确的地方,🤗🤗🤗欢迎在下面 👇👇👇 留个言指出、或者你有更好的想法,
欢迎一起交流学习❤️❤️💛💛💚💚

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值