首页 > 代码库 > 字符串的长度,是字符数量,还是字节数量?

字符串的长度,是字符数量,还是字节数量?

当计算字符串的长度时,大多数人脑海中闪现的第一个函数是:Len(),该函数返回的字符的数量(number of characters),不包含结尾空格,但是包含前导空格。

示例,Len 函数返回的是字符的数量,而不是字符的字节数量。

declare @str_v varchar(10)declare @str_nv nvarchar(10)set @str_v= ab set @str_nv=N ab select len(@str_v) as len_v,len(@str_nv) as len_nv

技术分享

如果要计算字符串占用的字节数量(number of bytes),请使用DataLength()函数。

示例,每个unicode字符占2B,ASCII 字符占1B。

declare @str_v varchar(10)declare @str_nv nvarchar(10)set @str_v= ab set @str_nv=N ab select datalength(@str_v) as len_v,datalength(@str_nv) as len_nv

技术分享

 

参考doc:

LEN (Transact-SQL)

DATALENGTH (Transact-SQL)

字符串的长度,是字符数量,还是字节数量?