问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用来表示可变长度的非unicode的字符数据类型是?

发布网友 发布时间:2022-05-04 12:40

我来回答

1个回答

热心网友 时间:2022-06-22 00:53

对于程序中的string型字段,SQLServer中有char、varchar、nchar、nvarchar四种类型来对应(暂时不考虑text和ntext),开建立数据库中,对这四种类型往往比较模糊,这里做一下对比。

定长或变长
所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;有var前缀的,表示是实际存储空间是变长的,比如varchar,nvarchar变长字符数据则不会以空格填充,比较例外的是,text存储的也是可变长。
Unicode或非Unicode
数据库中,英文字符只需要一个字节存储就足够了,但汉字和其他众多非英文字符,则需要两个字节存储。如果英文与汉字同时存在,由于占用空间数不同,容易造成混乱,导致读取出来的字符串是乱码。Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。而前缀n就表示Unicode字符,比如nchar,nvarchar,这两种类型使用了Unicode字符集。
基于以上两点来看看字段容量
char,varchar 最多8000个英文,4000个汉字
nchar,nvarchar 可存储4000个字符,无论英文还是汉字

使用(个人偏好)
如果数据量非常大,又能100%确定长度且保存只是ansi字符,那么char
能确定长度又不一定是ansi字符或者,那么用nchar;
对于超大数据,如文章内容,使用nText
其他的通用nvarchar
char、varchar、nchar、nvarchar特点比较
CHAR
CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间。
VARCHAR
存储变长数据,但存储效率没有CHAR高,如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么"+1"呢?这一个字节用于保存实际使用了多大的长度。
从空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。
TEXT
text存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。
NCHAR、NVARCHAR、NTEXT
这三种从名字上看比前面三种多了个"N"。和char、varchar比较起来,nchar、nvarchar最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储8000个英文,4000个汉字。可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。
所以一般来说,如果含有中文字符,用nchar/nvarchar,如果纯英文和数字,用char/varchar
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
会计中级什么时候拿证 会计中级职称什么时候领取 手机中毒后恢复出厂设置就可以了吗? 手机中病毒后如何清除? 做代购初期怎么找客源,微商代购怎么找精准客 ...代购,都是阿迪耐克正品。怎么才能把微商做好。 做微商和代购,有哪些引流获客的方法? 250㎜的水泥撑棍一捆多少根? 吊顶一平要多少丝杠 ...断开电源,一端接地,这个时候把极板远离,为什么是两极板电压变大而... 数据库定义一个可变长度为80的字符串,它的类型如何表示? 财务打50个人的工资需要多久? OPPO N3的自带相机里的美颜相机有带瘦脸功能什么的吗? 宁波哪里修DVD导航好点 先科移动DVD北京维修点 急急急!!! dvd导航能开机黑屏维修方法 666x1.7+222x4.9简便计算? 天津哪里有维修便携式DVD的地方啊? 666✘302+222✘396简便方法? 666x667+222x999 topssd天硕 32gb 666x高速sd卡 哪里有卖的 简便计算:666X667+222X999? 上海步步高dvd维修点在哪里 666X1444一888x333,怎么简便运算? 666X667+222X99用简便方法计算 666x667+222x999简便计算是什么? 666x26+999x16 的简便运算怎么算 宇问ec666X屏幕显示反了 笨蛋用日语怎么写? 666x2323+333x5554等于多少? C语言怎么实现可变长度字符串 mysql中将字符串设为可变长度的类型有什么缺点 计算机可存储的常见的数据类型有那些?举例说明。 成语故事杯弓蛇影、杀鸡取蛋、井底之蛙、狐假虎威以及守株待兔是什么意思? ios怎么从测试版降级 ubuntu 安装wine 是出现dpkg: error processing wine1.7-i386 (--install): 依赖关系问题 - 仍未被配置 淘宝上的免税低价苹果手机能买吗淘宝上的免税低价苹果手机能买吗 淘宝网上的低价手机能买吗? 特价版淘宝几块十几块买手机是真的吗 如果买的个收到的不是一样的该怎么处理? 中国移动优惠购机活动的手机一般质量可靠吗? max快捷键设置 3D MAX的快捷键 如何能自己设置 3Ds max 快捷键如何设置 3dmax关键点模式切换按钮怎么设置快捷键 3d max 如何自定义快捷键? max插件快捷键怎么设置 3dsmax怎么创建自定义快捷键? 2016版的3dmax如何设置快捷键 MAX菜单快捷键怎么修改 有白酱油吗