我们在日常开发过程中,在进行数据库设计的时候,经常会遇到如果选择数据类型的问题,选择什么样的数据类型最合适,然后当我们在项目中建立对应实体的时候,如何选择对应的CLR类型。针对这些问题,于是这篇文章诞生了。
SQL Server数据类型 | 占用字节数 | 表示范围 | 对应的CLR类型 | 數據類型選擇 | 适用场景 |
char | char(n) | System.String | char(2) | 使用char(2)来表示类型或状态(建议用tinyint代替) | |
varchar | varchar(n) | 1~8000 | System.String | varchar(20) | 只包含英文字符的字符串 |
nvarchar | nvarchar(n) | 1~4000 | System.String | nvarchar(20) | 包含中文字符的字符串 |
int | 4个字节 | -2,147,483,648 到 2,147,483,647 | System.Int32 | int | 表示整型,比如自增ID和表示數量 |
bigint | 8个字节 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 | System.Int64(Long) | bigint | 表示长整型,比如自增ID(数量比较大的情况下) |
decimal | 5~17字节 | System.Decimal | decimal(18,2) | 金额和價格(和錢相關的) | |
tinyint | 1字节 | 0~255 | System.Byte | tinyint | 类型和状态,比char(2)扩展性好 |
bit | 0,1或NULL | System.Boolean | bit | 一般用来表示是和否两种情形,比如IsStop | |
datetime | 8字节 | 1753 年 1 月 1 日到 9999 年 12 月 31 日 | System.DateTime | datetime | 表示日期和时间 |
time | System.TimeSpan | time(7) | 表示时间间隔,比如计时和耗時 | ||
varbinary | System.Byte | varbinary(max) | 表示二进制数据 |