首页 > 数据库 >SQL Server中数据类型之char、nchar、varchar、nvarchar的用法

SQL Server中数据类型之char、nchar、varchar、nvarchar的用法

时间:2023-07-18 14:23:15浏览次数:40  
标签:字符 varchar 字节 10 数据类型 Server char nvarchar

char数据类型

char数据类型是固定长度的非unicode字符数据,如果是英文字符,占用1个字节,如果是汉字,占用2个字节。列如:char(10),可以存10个英文字母,5个汉字。

char数据类型存储固定长度数据很方便,char字段上的索引效率极高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间。因为是固定长度,所以速度效率高。

char数据类型因存储固定长度数据,它的缺点也是很明显,比如定义char(10),如果存的字符的个数小于10,其它空间会用空格补上,导致在查询数据时非常不方便。程序处理起来要麻烦一点,要用trim之类的函数把两边的空格去掉。

 

 

Nchar数据类型

nchar数据类型对每个英文(ASCII)字符都占用2个字节,对一个汉字也占用两个字节,所有的字符都占用2个字节。

例如:nchar(10),可以存10个英文字母,也可以存10个汉字,如果存的字符的个数小于10,其它空间会用空格补上。

 

varchar数据类型

varchar数据类型是可变长度非Unicode数据,例如:varchar(10),存10个字母,5个汉字。如果存的字符的个数小于10,其它空间不会用空格补上。

如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。

Varchar类型:Varchar 的类型不以空格填满,而Char则会填充满为止,如varchar(100),但它的值只是"abcd",所以它在数据库中存的值就是"abcd",而char 不一样,如char(100),它的值是"abcd",而实际上它在数据库中是"abcd "(abcd后共有96个空格,就是把它填满为100个字节)。

 

nvarchar数据类型

nvarchar数据类型是可变长度的Unicode数据。

nvarchar在SQL Server中是采用Unico来存储数据的,中文字符存储到SQL Server中会保存为两个字节(一般采用Unico编码)。

正常情况下,我们使用varchar也可以存储中文字符,但是如果遇到操作系统是英文操作系统并且对中文字体的支持不全面时,在SQL Server存储中文字符为varchar就会出现乱码(显示为??),唯一能解决问题的是把数据库字段的类型改为nvarchar或 者nchar。

使用nvarchar的另一个非常好处就是在判断字符串的时候可以不需要考虑中英文两种字符的差别.当然,使用nvarchar存储英文字符会增大一倍的存储空间,但是在存储代价已经很低廉的情况下,优先考虑兼容性会给你带来更多好处的。

 

 

这四种数据类型名字上看nchar\nvarchar比char\varchar前面多了个“n”。它表示存储的是Unicode数据类型的字符。英文字符只需要一个字节存储就足够了,但汉字需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。nchar、nvarchar的长度是在1到4000之间。和char、varchar比较起来,nchar、nvarchar则最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储8000个英文,4000个汉字。可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。

 

 

 

标签:字符,varchar,字节,10,数据类型,Server,char,nvarchar
From: https://www.cnblogs.com/guzhengtao/p/17562823.html

相关文章

  • 远程登陆virtualbox虚拟机windows server 2019
    1.virtualbox网络设置2.启用远程桌面3.获取远程ip4.本机使用mstsc远程登陆......
  • 在 Windows Server 2022 中,可以通过调整注册表来修改内核参数。以下是一些常见的内核
    在WindowsServer2022中,可以通过调整注册表来修改内核参数。以下是一些常见的内核参数调整在WindowsServer2022中,可以通过修改注册表来调整TCP/IP栈参数、TCP策略和文件系统缓存。请注意,对注册表的更改需要谨慎操作,建议在进行更改之前备份注册表以及系统状态。调整线......
  • docker buildx http: server gave HTTP response to HTTPS client
    参考:https://github.com/docker/buildx/issues/163https://github.com/thegeeklab/drone-docker-buildx/issues/153https://github.com/moby/buildkit/blob/master/docs/buildkitd.toml.md 准备用buildx构建多平台镜像,基于Dockerfilefrom私服中的jdk在执行以下命令时,......
  • 调用 ArcGIS Server(GeoScene Server Manager)REST 接口,获取目录
    #创建tokentoken=$(curl-ks-XPOST'https://gis.geoscene.cn:6443/geoscene/tokens/generateToken'-d'username=geoscene&password=KFzonghe2023&expiration=2&f=json'|jq'.token')token=${token:1:-1}#获取服务列表,从服务列表获取目......
  • linux搭建code-server及使用中遇到的问题
    系统环境CentOS8.5docker搭建linux不太熟,但是用docker搭建是真的简单,有现成的镜像的话一句命令就可以搞定。dockerrun-itd--namemy-code-server\-p5580:8080\-v/data/mycode:/home/coder\-ePASSWORD=12345678\codercom/code-server:latest--authpassword......
  • Elasticsearch date数据类型
    时间和日期类型是我们作为开发每天都会遇到的一种常见数据类型。和Java中有所不同,Elasticsearch 在索引创建之前并不是必须要创建索引的mapping。关系型数据库的思维就是在于写入数据之前,并不强制创建表结构。我们不用事先声明字段名称,字段类型以及长度等属性就可以直接向一个不......
  • sqlsever ip连接 navicat 连报错 sql server 设sa密码
    一、sqlserverip连接1、按下windows+R,弹出运行框。2、在弹出框中输入cmd,按下enter键。3、在dos命令窗口输入compmgmt.msc命令,按下enter键。将服务中:SQLServer(mssqlserver)、SqlServerBrowser启动 4、在计算机管理窗口-》展开服务和应用程序-》展开SQLServer配置管理......
  • SQL Server 2016 KB2919355 安装失败
    WindowsServer2012R2安装SQLServer2016检查未通过,需要安装KB2919355。错误如下图: 按提示,下载安装WindowsServer2012R2更新(KB2919355),下载文件为:Windows8.1-KB2919355-x64.msu(690MB)。但是安装时又提示错误! KB2919442是WindowsServer2012R2更新......
  • SqlServer基本操作
    一、创建数据库和表1、工具建库建表2、脚本建库建表USE[master]GOCREATEDATABASE[ZhaoXiEdu]CONTAINMENT=NONEONPRIMARY(NAME=N'ScoreInfo',FILENAME=N'D:\ScoreInfo.mdf',SIZE=8192KB,MAXSIZE=UNLIMITED,FILEGROWTH=65536KB)LOGON(NAME......
  • SqlServer用户权限
    一、设置权限用户的意义数据库是一个应用程序,运行起来对应一个进程,这个进程中,有很多很强大的功能支持,对于开发者或者是数据库管理者,都是充分的来应用这些功能,应用这些功能,需要客户端/或者是应用程序链接进来,通过客户端/应用程序来操作数据库。操作客户端来使用数据库功能的最终......