ITPub博客

首页 > 数据库 > SQL Server > sql server中的一个坑-len与datalength区别

sql server中的一个坑-len与datalength区别

原创 SQL Server 作者:datapeng 时间:2019-06-06 15:30:44 0 删除 编辑

今天在处理问题时,统计一个字段最大字节数时,出现了问题:

select max(len(subject_name)) from dbtabletest;

但返回值为129。

但在oracle端始终出现报错,说插入字符数过大,真是奇葩。

搞了半天,就把这个subject_name,拷贝出来,在文本编辑器中发现了有一行值后面有太多空格。直到现在才知道,需要使用datalength才能统计到结尾的空格,真是又被sql server坑了一把。

还好,最终找到问题了!

当采用非Unicode编码时,即varchar类型的字符串时,DataLength()和Len()的区别:

1、空格处理

Len() 字符串表达式的字符数,不计尾部空格,但计头部空格和中间的空格;

DataLength() 任何表达式的字节数,包括空格

2、对于汉字的处理

区别在于Len只返回字符数,一个汉字代表一个字符。Datalength返回的是字节数,一个汉字两个字节。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29371470/viewspace-2646973/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-12-06

  • 博文量
    225
  • 访问量
    2519022