字符长度还是字节长度

今天碰见一小细节问题,找了好久发现是长度,我没有很清楚的了解。

string str = "a.23859697AA  (芜湖杰诺瑞) b.23859697BA(长沙博世)";

str.Length= 40

在C#中 字符串str的长度是40 这里是指字符串的长度

插入到SQL数据库中 str varchar(50)  报错:String or binary data would be truncated.  字符串长度过长需截断。

然后select  Len('a.23859697AA  (芜湖杰诺瑞) b.23859697BA(长沙博世)')  查询出来的结果是40  以为没有超出长度

后来经过搜索发现 select Datalength('a.23859697AA  (芜湖杰诺瑞) b.23859697BA(长沙博世)')  查询出来的结果是52

Datalength: 返回字符串的字节长度  
Len: 返回字符长度

而varchar的长度是指 字符串的字节长度

附: varchar nvarchar char的区别

来自:http://www.cnblogs.com/yelaiju/archive/2010/05/29/1746826.html

原文地址:https://www.cnblogs.com/see-you/p/4043693.html