为什么在不指定长度的情况下将文本转换为varchar会将文本截断为30个字符?

Kev*_*vin 3 sql-server varchar text casting

我正在搜索MS-SQL Server 2005数据库,以确保某个文本字段始终是8的倍数.当我运行以下查询时,我得到了几行长度为30.但是当我调查这些记录时,我发现它们比那些长.

select distinct len(cast(textfield as varchar)) from tablename
Run Code Online (Sandbox Code Playgroud)

但是,如果我将varchar的长度指定为更长的时间(如下面的查询中所示),则它可以正常工作.

select distinct len(cast(textfield as varchar(1000))) from tablename
Run Code Online (Sandbox Code Playgroud)

任何人都知道它为什么默认为30,如果这是一个可配置的设置?