Sql 在数据库int或char中保存值的好做法是什么?

Sql 在数据库int或char中保存值的好做法是什么?,sql,sql-server,database,sql-server-2008,Sql,Sql Server,Database,Sql Server 2008,我知道这是一个愚蠢的问题,但我想知道当我在数据库中保存int值而不是char时,什么是好的做法 当我想在数据库中保存数周时 我认为,如果我们在数据库中保存一个char值,它会更具描述性。 告诉我哪一个好,为什么? 是否存在任何性能问题 char并不能使其更具描述性。如果要对数据库中的任何内容使用该值,则无论如何都必须将其转换为数字 如果最大值为52/53(取决于周/等周),则使用tinyint。否则,请使用其他方法 另一个潜在问题是排序。如果您要在星期进行排序,您是要存储前导零,以便它们只使用c

我知道这是一个愚蠢的问题,但我想知道当我在数据库中保存int值而不是char时,什么是好的做法

当我想在数据库中保存数周时

我认为,如果我们在数据库中保存一个char值,它会更具描述性。 告诉我哪一个好,为什么?
是否存在任何性能问题

char
并不能使其更具描述性。如果要对数据库中的任何内容使用该值,则无论如何都必须将其转换为数字

如果最大值为52/53(取决于周/等周),则使用
tinyint
。否则,请使用其他方法


另一个潜在问题是排序。如果您要在星期进行排序,您是要存储前导零,以便它们只使用
char
数据类型进行排序,还是将其排序为
1,11,12..

这句话就是问题所在:

我认为如果我们在数据库中保存一个char值,它会更具描述性

数据库中的值不应设计为描述性的

应该始终将值存储在适当的数据类型中

想象一下你需要计算一个差值。您必须拆分/解析字符串,将其转换为数字类型,执行计算并重新格式化输出


描述性是一个只能用于表示层、报告和前端的词。

将字符串数据保存为字符串。将数字数据保存为数字——如果数据是整数,则将其保存为整数。这既不困难也不违反直觉。本文对使用错误数据类型的问题进行了很好的解释。你目前的两个答案都很好。就我个人而言,我无法决定哪一个更好,这就是为什么我两个都投了更高的票。他们唯一缺少的是肖恩·兰格评论中提供的链接。Aaron Bertrand的Bad habbits系列是所有使用数据库的人的必读书籍。感谢大家的评论。投票给这个关于排序的非常重要的提示!谢谢你的回答。@DurgpalSingh很乐意帮忙!谢谢你的回答。