len 和 varchar(max) 的问题

devforever 2011-03-16 02:03:38
求教!! 如下的SQL语句:

declare @temp varchar(max)
select @temp = 'ABCD '

select len(@temp)

为什么我在一台服务器上的到的结果是4, 而另外一台是5. 按照LEN的定义,最后的空格不是应该忽略不计吗? 是不是数据库本身的设置的问题呀?

还有,发现如果不是用VARCHAR(MAX),而是给定一个数值,比如VARCHAR(200),就没有区别了.
...全文
158 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
andy_liucj 2011-03-16
  • 打赏
  • 举报
回复
在sql2005 xp sp3 上左右空格都没有去掉
叶子 2011-03-16
  • 打赏
  • 举报
回复
估计是数据库版本的问题?
快溜 2011-03-16
  • 打赏
  • 举报
回复
没事可以百度下len函数源码。默认应该是去掉左右空格的。
devforever 2011-03-16
  • 打赏
  • 举报
回复
我知道,只是觉得同样的语句在不同数据库服务器上(相同的MSSQL版本)为什么会产生不同的结果,而且只在VARCHAR(MAX)时出现.我是想了解一下可能会是什么原因造成这样的结果
昵称被占用了 2011-03-16
  • 打赏
  • 举报
回复
估计需要打下补丁,你先检查下两个服务器的数据库版本是不是不同,直接
select @@Version
--小F-- 2011-03-16
  • 打赏
  • 举报
回复
最好还是select len(rtrim(ltrim(@temp)))

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧