我已经在MSDN论坛和这里读到了这一点,但我仍然不清楚.我认为这是正确的:Varchar(max)将存储为文本数据类型,因此这有缺点.因此,假设你的字段将可靠地少于8000个字符.就像数据库表中的BusinessName字段.实际上,一个企业名称可能总是少于500个字符(从我的帽子里拿出一个数字).我遇到的很多varchar字段似乎都在8k字符计数下.

那么我应该把这个字段设为varchar(500)而不是varchar(8000)吗?从我对SQL的理解来看,这两者没有区别.所以,为了让生活变得简单,我想将我所有的varchar字段定义为varchar(8000).这有什么缺点吗?

相关报道:Size of varchar columns(我觉得这本书没有回答我的问题).

推荐答案

从处理的Angular 来看,使用varchar(8000)和varchar(500)不会有什么区别.定义一个字段应该容纳的最大长度,并将您的varchar设置为该长度,这更像是一种"良好实践".它可以用来帮助数据验证.例如,将州缩写设置为2个字符,或将邮政编码设置为5或9个字符.当数据与字段长度至关重要的其他系统或用户界面(例如大型机平面文件数据集)交互时,这曾经是一个更重要的区别,但现在我认为这更像是一种习惯.

Sql相关问答推荐

平均SQL

根据另一列的值添加另一列的给定值

无法找到正确的SQL查询需求

用于平均多个数据并与一个数据点进行比较以判断偏移量的SQL查询

SQL查询视图与连接?

在MS Access Modern图表的X轴上显示时间值时遇到问题

将FLOAT转换为VARBINARY,然后再转换回FLOAT

将二维数组的第一个和第二个元素取消嵌套到两个一维数组中

查询以从时间范围列表中查找唯一时间段

通过ID和数据找到每个不同的值

PostgreSQL:从多个字段收集特定指标的最后一个条目

如何在sparksql查询中使用日期值?

使用row_number() over partition by保留首次出现且值不为空的行的方法

为什么在事务中未被后续使用的CTE执行SELECT...FOR UPDATE无效?

使用给定的变量对在循环中执行更新语句

使用其他表 SUM 的交换价格转换价格并获得 AVG

T-SQL - 返回每条记录的最近雇佣日期

如何通过子 Select 在一次更新(并行数组)中多次更新相同的行

并非所有变量都绑定在 PL SQL 函数中

每组跨行曲折?