注册 登录
编程论坛 SQL Server论坛

[求助]为什么print len('中')结果为1?print len(N'中')结果也为1?

扬麻 发布于 2007-09-23 08:40, 1062 次点击

请问:
在sql中,char,varchar,是单字节字符,而nchar,nvarchar是双字节字符,
哪汉字‘中’到底是双字字符还是单字节字符?
如果是双字节字符,为什么print len('中')结果为1,print len(N'中')结果也为1,
如果是单字节字符,哪汉字怎么能用单字节表示哪?

2 回复
#2
purana2007-09-23 09:44
我想你有点不太清楚.
根据ms sqlserver的联机丛书.是这样写道.
LEN
返回给定字符串表达式的字符(而不是字节)个数,其中不包含尾随空格。

Len是取字符个数.而不是字节数.
如果你想得到字节数.
而可以用DataLength函数

DATALENGTH
返回任何表达式所占用的字节数。

select len('中国'),datalength('中国')
#3
扬麻2007-09-23 10:28
谢谢!我明白了,讲的非常清楚!这里的版主真热心。

[此贴子已经被作者于2007-9-23 10:32:16编辑过]

1