自动设置为值的字段长度的SQL数据类型

自动设置为值的字段长度的SQL数据类型,sql,types,varchar,Sql,Types,Varchar,是否存在这样的情况,或者您总是需要手动设置最大字段长度 我们的数据库中有一个varchar字段,其中值的长度可以是从0到800或更大的任何值。是否有一种数据类型会自动将自身设置为输入值的长度 (这是专门针对SQL Server的,但也应适用于大多数其他RDBMS) 您需要定义最大长度,但是varchar类型将始终只存储所需的数据。因此,需要定义自动处理的最大值,而不是实际大小 因此,如果您有varchar(800)并存储50个字符,它将占用52个字节。如果存储100个字符-使用102个字节(每个

是否存在这样的情况,或者您总是需要手动设置最大字段长度

我们的数据库中有一个
varchar
字段,其中值的长度可以是从0到800或更大的任何值。是否有一种数据类型会自动将自身设置为输入值的长度

(这是专门针对SQL Server的,但也应适用于大多数其他RDBMS)
您需要定义最大长度,但是
varchar
类型将始终只存储所需的数据。因此,需要定义自动处理的最大值,而不是实际大小

因此,如果您有
varchar(800)
并存储50个字符,它将占用52个字节。如果存储100个字符-使用102个字节(每个条目的开销为2个字节)

同时,我仍然认为您应该而不是只定义所有列
varchar(max)
(最大2 GB大小)-尽管这看起来很诱人,也很方便。请阅读以获得有关为什么不这样做的详细解释。

(这是专门针对SQL Server的,但也应适用于大多数其他RDBMS)
您需要定义最大长度,但是
varchar
类型将始终只存储所需的数据。因此,需要定义自动处理的最大值,而不是实际大小

因此,如果您有
varchar(800)
并存储50个字符,它将占用52个字节。如果存储100个字符-使用102个字节(每个条目的开销为2个字节)


同时,我仍然认为您应该而不是只定义所有列
varchar(max)
(最大2 GB大小)-尽管这看起来很诱人,也很方便。请阅读以获得关于为什么不这样做的详细解释。

不,没有这样的东西。这就是为什么在不指定其大小的情况下不能声明
VARCHAR
。您需要定义最大长度-但是
VARCHAR
类型始终只存储所需的数据。。。如果您有
varchar(800)
并存储50个字符,那么它将占用52个字节。如果您存储了100个字符-使用了102个字节(每个条目的开销为2个字节),marc_s:您想将其添加为答案吗?问题是您在数据进入表之前设置了最大值。有些数据类型可以根据需要存储尽可能多的数据,如long var char和blob。不,没有这样的东西。这就是为什么在不指定其大小的情况下不能声明
VARCHAR
。您需要定义最大长度-但是
VARCHAR
类型将始终只存储所需的数据。。。如果您有
varchar(800)
并存储50个字符,那么它将占用52个字节。如果您存储了100个字符-使用了102个字节(每个条目的开销为2个字节),marc_s:您想将其添加为答案吗?问题是您在数据进入表之前设置了最大值。有一些数据类型可以根据需要进行存储,如long var char和blob。