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之间(包含边界)

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值