varChar和Char在强制转换时表现不同

时间:2010-10-05 09:45:16

标签: sql-server sql-server-2008 datalength

为什么输出与此查询不同

SELECT DATALENGTH(CAST('test' AS VARCHAR)), DATALENGTH(CAST('test' AS CHAR))

输出:

4,30

2 个答案:

答案 0 :(得分:4)

VarChar始终调整为传递的字符串的长度。因此输出为4。

CHAR的默认长度为30,因此输出为30。

答案 1 :(得分:1)

因为"When n is not specified when using the CAST and CONVERT functions, the default length is 30“。但是当DataLength应用于varchar字段时,它会忽略尾随空格,而对于char字段,长度只是字段本身的大小。