首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sql server Varchar和char

sql server Varchar和char
EN

Stack Overflow用户
提问于 2016-11-29 18:14:18
回答 3查看 826关注 0票数 0

我目前正在为一家大公司开发,他们要求我按照一些指导原则为该项目创建一个数据库,但我有一个关于char和varchar的小问题。

我有一个字符串,可以是8个字符,也可以是11个字符,我想知道哪个是最好的解决方案:

myColumn varchar(11)myColumn char(11)

一开始我在想第二个,但是char是固定长度的,不是吗?

谢谢你的回答。

EN

回答 3

Stack Overflow用户

发布于 2016-11-29 18:18:30

char( 11 )可以容纳最多11个字符的字符串,但是即使只有2个字符,它也会占用全部11个字符的空间(将用空格填充其余的字符)。其中,as varchar(11)保存相同长度的字符串,但不保留空间。

What is the major difference between Varchar2 and char

票数 0
EN

Stack Overflow用户

发布于 2016-11-29 18:23:32

CHAR数据类型是固定长度的数据类型。例如,如果您声明一个CHAR ( 11 )数据类型的列,那么无论您在此列中存储的是1个字符还是11个字符,它都将始终占用11个字节。

另一方面,VARCHAR是一种可变长度数据类型。例如,如果声明一个数据类型为VARCHAR (11)的列,它将采用与此列中存储的字符数相等的字节数。因此,在这个变量/列中,如果你只存储一个字符,那么它将只占用一个字节,如果我们存储11个字符,那么它将占用11个字节。在本例中,由于您已将一个列声明为VARCHAR ( 11 ),因此我们可以在此列中存储最多11个字符。

https://msdn.microsoft.com/en-in/library/ms176089.aspx

票数 0
EN

Stack Overflow用户

发布于 2016-11-29 18:26:01

varchar(11)更可取,因为内存分配是动态的(例如,假设字符串长度为8,则仅为8个字符分配内存,而不是为所有字符分配内存。但是在为所有单元分配了char(11)存储器的情况下。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40863184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档