Sql server varChar和Char在cast上的行为不同

Sql server varChar和Char在cast上的行为不同,sql-server,sql-server-2008,datalength,Sql Server,Sql Server 2008,Datalength,为什么此查询的输出不同 SELECT DATALENGTH(CAST('test' AS VARCHAR)), DATALENGTH(CAST('test' AS CHAR)) 输出: 4,30VarChar始终根据所传递字符串的长度进行调整。因此,输出为4 CHAR的默认长度为30,因此输出为30。因为“。但是当DataLength应用于varchar字段时,它会忽略尾随空格,而对于CHAR字段,长度只是字段本身的大小

为什么此查询的输出不同

SELECT DATALENGTH(CAST('test' AS VARCHAR)), DATALENGTH(CAST('test' AS CHAR))
输出:


4,30

VarChar始终根据所传递字符串的长度进行调整。因此,输出为4

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

因为“。但是当DataLength应用于varchar字段时,它会忽略尾随空格,而对于CHAR字段,长度只是字段本身的大小