在SQL Server中将CHAR转换为VARCHAR的问题

时间:2015-11-04 13:29:02

标签: sql-server casting 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中的错误吗?还有其他解释吗?

1 个答案:

答案 0 :(得分:3)

char数据类型是固定宽度,垫有尾随空格。

因此,您的char(15)值将使用12个尾随空格填充(为了清晰起见,将替换为低分的空格)ABC____________

来自LEN ...

的文档
  

返回指定字符串表达式的字符数,   不包括尾随空白

DATALENGTH会计算尾随空格。