文字型态的数据适合什么格式存进数据库
使用数据库保存文字的数据,在数据库中会有以下这些的型态可以设定
char, varchar, nchar, nvarchar
那么到底要用哪种型态比较适合,这些型态之间有何差异呢??
意义与差异
从这些字眼上来看,都是有char,差别在var与n这两个字眼,那么就先来简单介绍一下这两个字眼代表的意义:
var:不定长度→有多长存多长
n:Unicode→无论英文、数字、中文、日文、...每个字都占2Byte。
说明一下:
char与nchar声明的是固定的长度,因此如果声明char(5),但是只放a这个字,那么就会补另外4个空白,会补空白补满是他的特性,而nchar(5)也是会放满5个字,但是每个字无论中英数都会用2个Bytes来存放
varchar与nvarchar都是不定长度,因此如果声明varchar(5),但是只放a这个字,那么就会放一个a,不会补空白。而如果声明nvarhcar(5)那还是只放a这个字,但是会用2Bytes来存放。如果放了【中】这个中文字,在varchar会占用2个位子,但是nvarchar指占用1个位子。
举个例子来看
假设有四个字段,分别放入【a1中】这样的字符串,比较一下这些的差异如下:
数据类型 | 内容 | 占位数 | Byte数 |
char(10) | a1中+6个空白 | 10 | 10 |
varchar(10) | a1中 | 4 | 1+1+2=4 |
nchar(10) | a1中+7个空白 | 10 | 20 |
nvarchar(10) | a1中 | 3 | 2*3=6 |
再来一个比较char(10)与nchar(10)
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
|||||||||||
char(10) |
a | 1 |
中 |
|||||||||||||||||
2位 | ||||||||||||||||||||
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
|||||||||||
nchar(10) |
a | 1 |
中 |
因此在规划上,只要存放的数据有可能有中文,小喵就会加n。而除非确定数据固定会是几位不变,不然数据长度不特定就会声明加上var。
此文为转贴,原文: 【topcat姗舞之间的极度凝聚】
原文地址:https://www.cnblogs.com/petewell/p/11516512.html
时间: 2024-10-30 04:12:20