LEN()和DATALENGTH()的区别

LEN(string_expression):返回指定字符串表达式的字符数,其中不包含尾随空格。
DATALENGTH(expression):返回用于表示任何表达式的字节数。如果处理的是unicode字符串,则返回两倍的字符数。

DECLARE @Str1 NVARCHAR(50)='汉字abcd '
DECLARE @Str2 VARCHAR(50)='汉字abcd '
DECLARE @Str3 CHAR(50)='汉字abcd '
DECLARE @Str4 NCHAR(50)='汉字abcd '

SELECT LEN(@Str1), LEN(@Str2), LEN(@Str3), LEN(@Str4)  -- 返回指定字符串表达式的字符数,其中不包含尾随空格

-- 和查询语句1比较:LEN()、DATALENGTH()的区别
-- 自身比较:NVARCHAR、VARCHARCHARNCHAR的区别
SELECT
    DATALENGTH(@Str1),  -- NVARCHAR(n):变长,每个字符占2个字节,n介于1~4000之间(包含边界)
    DATALENGTH(@Str2),  -- VARCHAR(n):变长,unicode字符占2个字节,非unicode字符占1个字节,n介于1~8000之间(包含边界)
    DATALENGTH(@Str3),  -- CHAR(n):定长,所占字节为定长n,n介于1~8000之间(包含边界)
    DATALENGTH(@Str4)  -- NCHAR(n):定长,所占字节为定长n*2,n介于1~4000之间(包含边界)

这里写图片描述

猜你喜欢

转载自blog.csdn.net/anndcorner/article/details/80503871
今日推荐