我正在观察一个非常奇怪的行为。请考虑以下几点:在SQL Server中将CHAR转换为VARCHAR的问题
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的二十年中,平均而言,我已经看到了一个实际的微软错误,它导致大约每十年一次的查询意外返回数据。如果你认为你看到了一个,那么你很可能只是不了解正确的行为。 –
如果不清楚,问题的关键不在于这是否是SQL Server错误。关键是这种行为似乎有些不合逻辑,因此也是意料之外的。所以,而不是一般的文体批评,对这种行为的有意义的解释会受到欢迎。 – Ramzay