varChar 和 Char 在转换时表现不同

Jee*_*att 2 sql-server sql-server-2008 datalength

为什么此查询的输出不同

SELECT DATALENGTH(CAST('test' AS VARCHAR)), DATALENGTH(CAST('test' AS CHAR))
Run Code Online (Sandbox Code Playgroud)

输出:

4,30

Sac*_*hag 5

VarChar 总是根据传递的字符串的长度进行调整。因此输出为 4。

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