【发布时间】:2016-02-05 00:36:35
【问题描述】:
我观察到一种非常奇怪的行为。请考虑以下几点:
declare @a char(15)
set @a = 'ABC'
select len(@a), len(convert(varchar, @a)), convert(varchar, @a) + 'D', len(convert(varchar, @a) + 'D')
在生成的结果集中,值 3 和 4 是意外的:
3 3 ABC D 16
这可能是 SQL Server 中的错误吗?还有其他解释吗?
【问题讨论】:
-
在使用 SQL Server 的 20 年中,平均而言,我见过一个实际的 Microsoft 错误,它会导致大约十年一次的查询返回意外数据。如果您认为自己看到了一个,那么您很可能只是不了解正确的行为。
-
如果不清楚,问题的关键不在于这是否是 SQL Server 错误。关键是这种行为似乎有些不合逻辑,因此出乎意料。因此,欢迎对行为进行有意义的解释,而不是一般的风格批评。
标签: sql-server casting char varchar