对于大多数SQL Server编程开发者来说,当计算字符串的长度时,脑海中闪现的第一个函数是:Len(string),这个“长度”,默认情况下,是指字符的数量,一个英语字符是一个长度,一个汉字是一个长度。大多数的字符串函数,例如charindex,substring,stuff等函数,其位置都是针对字符数量的,这使得Len函数深入人心,但是,一个Unicode字符,占用的字节数量是2Byte,而一个普通的ASCII字符占用的字节数量是1Byte,当需要计算字符串占用的字节数量时,要如何计算字符串的长度?对于各个类型所占用的字节数量,又该如何计算?带着这个疑问,让我们一睹DataLength函数的庐山真面目。

一,字符数量

Len(string) 函数返回的数值是字符的数量(number of characters),在统计字符数量时,不包含结尾空格,但是包含前导空格。

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

大数据培训,云培训,数据挖掘培训,云计算培训,高端软件开发培训,项目经理培训

declare @str_v varchar(10)declare @str_nv nvarchar(10)declare @str_nv_cn nvarchar(10)set @str_v=' ab 'set @str_nv=N' ab 'set @str_nv_cn=N' 悦光阴'select len(@str_v) as len_v
    ,len(@str_nv) as len_nv
    , len(@str_nv_cn) as str_nv_cn

大数据培训,云培训,数据挖掘培训,云计算培训,高端软件开发培训,项目经理培训

大数据培训,云培训,数据挖掘培训,云计算培训,高端软件开发培训,项目经理培训

二,字节数量

对于varchar类型,大家都知道,这是单字节字符,一个字符占用一个字节,总共能够表示的256个字符;而对于nvarchar类型,一个字符占用两个字节,能够表示世界上所有的字符集,一个unicode字符占用两个字节,如果要计算字符串占用的字节数量(number of bytes),请使用DataLength()函数,该函数统计字节数量时,字符串的所有字符都会计算在内,包括前导空格和结尾空格。

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

延伸阅读

学习是年轻人改变自己的最好方式-Java培训,做最负责任的教育,学习改变命运,软件学习,再就业,大学生如何就业,帮大学生找到好工作,lphotoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训学习是年轻人改变自己的最好方式