nchar和nvarcharint和smallint的区别?

char,varchar,nvarchar有什么区别
核心提示:nvarchar 在 SQL-92 中的同义词为national char varying 和 national charactervarying。注释如果没有在数据定义或变量声明语句中指定n,则默认长度为 1。如果没有使用 CAST 函数指定 n...
一 、 nchar 和 nvarchar nchar是固定长度 Unicode 数据的数据类型,nvarchar 是可变长度 Unicode 数据的数据类型,二者均使用 UNICODEUCS-2字符集。 nchar(n) 包含n 个字符的固定长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。存储大小为 n 字节的两倍。nchar 在SQL-92 中的同义词为 national char 和 nationalcharacter。 nvarchar(n) 包含n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。nvarchar 在 SQL-92 中的同义词为national char varying 和 national charactervarying。 注释 如果没有在数据定义或变量声明语句中指定n,则默认长度为 1。如果没有使用 CAST 函数指定 n,则默认长度为30。 如果希望列中所有数据项的大小接近一致,则使用nchar。 如果希望列中数据项的大小差异很大,则使用nvarchar。 使用 nchar 或 nvarchar的对象被赋予数据库的默认排序规则,除非使用 COLLATE子句赋予特定的排序规则。 SET ANSI_PADDING OFF不适用于 nchar 或 nvarchar。SET ANSI_PADDING ON 永远适用于 nchar 和nvarchar。 二、char 和varchar 固定长度 (char) 或可变长度 (varchar)字符数据类型。 char[(n)] 长度为n 个字节的固定长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为 n个字节。char 在 SQL-92 中的同义词为character。 varchar[(n)] 长度为n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。varchar 在 SQL-92中的同义词为 char varying 或 charactervarying。 注释 如果没有在数据定义或变量声明语句中指定n,则默认长度为 1。如果没有使用 CAST 函数指定 n,则默认长度为30。 将为使用 char 或 varchar的对象被指派数据库的默认排序规则,除非用 COLLATE子句另外指派了特定的排序规则。该排序规则控制用于存储字符数据的代码页。 支持多语言的站点应考虑使用Unicode nchar 或 nvarchar 数据类型以尽量减少字符转换问题。如果使用 char 或varchar: 如果希望列中的数据值大小接近一致,请使用char。 如果希望列中的数据值大小显著不同,请使用varchar。 如果执行 CREATE TABLE 或 ALTERTABLE 时 SET ANSI_PADDING 为 OFF,则一个定义为 NULL 的 char 列将被作为 varchar处理。 当排序规则代码页使用双字节字符时,存储大小仍然为 n个字节。根据字符串的不同,n 个字节的存储大小可能小于 n个字符。 总结:1、varchar: 可变长度的非 Unicode 数据,最长为 8,000个字符。 2、nvarchar: 可变长度Unicode 数据,其最大长度为 4,000字符。 3、char: 固定长度的非Unicode 字符数据,最大长度为 8,000个字符。 4、nchar 固定长度的Unicode 数据,最大长度为 4,000 个字符。 5、char和varchar都是字符串类型的用Unicode编码的字符串,结果是字符的整数值.其实这两个类型最大的研究点就是在索引上的区别。现将我在使用SQL Server2008时的一个发现写下 。(注:本讨论未建立任何全文索引)
通常我们认为 like '%服装%' 这样的查询是无法利用索引的,基本就是主键扫描。
但是当我们为某个&定长字符型&字段建立 ……
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向
论文写作技巧
上一篇:下一篇:
相关经验教程工作了三年多,第一次跑来写博客,以前工作中遇到的问题,都没有整理过,从今天起,无论是在学习中还是在工作中,都希望能够通过博客记录一下自己的笔记以及体会。
作为开发人员,要做数据库设计,是避免不了的,但在定义表结构的时候,在选择数据类型时,会发现有几个类型很相似,就是char、nchar、varchar、nvarchar、text、ntext类型。开始的时候我也没有多在意,也没有去查过或者测试过他们的区别,现在我就给他们做个简单的分析,如果有不对的地方,希望大家多多指教。
char:是定长的,当你输入的字符小于定义的长度的时候,他会在后面补空格。如char(10)中,最多存取5位中文字符,或者10位英文或数字字符,即中文字符占2个长度,英文或数字占1个长度。
nchar:定长的,同char,小于定义长度则补空格,不同的是,比char多了个“N”,表示存储的是Unicode数据类型的字符,nchar(10)中,最多存取10位中文、英文或数字字符,即中文、英文或数字都是占1个长度。
由于char和nchar都是在小于定义长度时补空格,所以往往读取的时候程序需要做一下 trim()的操作。
varchar:存储变长的数据。当你存储的数据是变长的,且不超过一个固定的长度n时,则可定义长varchar(n),而实际上,varchar的长度是n+1,还有1个长度是用来保存实际使用了多少长度。
nvarchar:同char和nchar的区别,中文字符在varchar中占2个长度,在nvarchar中占1个长度。
text:存储变长的数据。最大长度为2^31-1个字符
ntext:同char和nchar的区别,文字符在text中占2个长度,在ntext中占1个长度。
如下图的测试中可见:
除了上面的测试和提到的区别,我还查询了一些相关的资料,这里只做一下简单的笔记说明。
char字段的索引效率级高,而varchar虽然没有char高,但是和char相比其实处理速度是差不多的。
而索引中列总长度最多为900字节,所以长度大于900的char、varchar和大于450的nchar、nvarchar会无法创建索引
text、ntext上也是无法创建索引的。
多了个n开头的类型,速度上都会慢一些,比如nvarchar要比varchar处理起来慢些。
在选择上,我总结一下:
如果是纯英文或数字,就选择char、varchar,如果是中英文数字混合的,则可选择nchar、nvarchar
定长的则选择char、nchar,如性别字段,F\M则char(1),不定长的则选择varchar、nvarchar
如查询且希望索引的话,则长度定在400以内吧。
不需要做查询或索引的,也可考虑text和ntext。
像博客这样的内容字段,要把编辑器生成的html代码存取进去,可使用nvarchar(max)或者ntext字段。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:26次
排名:千里之外}

我要回帖

更多关于 float和real的区别 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信