关于SQL SERVER 字段类型char(n) , nchar(n) , varchar(n) , nvarchar(n)
对于很多新手来说,经常被字段类型搞得晕头转向,今天我用通俗易懂的解释帮大家理解这些类型。
在数据库字段类型定义中,可以分为两大类,一类为Unicode类型,另一种就是非Unicode。
Unicode的编码方式与ISO10646的通用字元集(亦称[通用字符集])(Universal Character Set,UCS)概念相对应,
目前的用于实用的Unicode版本对应于UCS-2,使用16位的编码空间,也就是每个字符占用2个字节。
简单来说就是中文类型和非中文类型,个人喜欢把英文,数字,特殊符号定为非中文类型,其余的均定为中文类型。
想了解Unicode的可以去详细了解一下,这里不多做赘述,直接上干货:
char(n) , varchar(n) 表示按字节存储数据,nvarchar(n),nchar(n) 表示按字符存储数据。
char,varchar 最多8000个英文,4000个汉字
nchar,nvarchar 可存储4000个字符,无论英文还是汉字
列子:
“你好hello”
char占用空间:2*2+5=9个字节
nvarchar占用空间:7*2=14个字节

使用varchar存储含有非英文字符(比如中文,日文)时出现“??”的乱码,用nvarchar这则不会出现
可见,各有各的优点,那该怎么选择呢?
如果字段存储内容都是英文字符而没有汉字和其他语言符号,建议使用varchar,或char;
含有汉字的使用nvarchar,因为nvarchar是使用Unicode编码,即统一的字符编码标准,会减少乱码的出现几率;
个人一般建议,主键用char(char(10),和char(13)除外,卖个关子,自己去体会),
前提是你是自己编写的主键,带有英文字母和数字的混合字符串主键,如果是用int型自增主键则忽略
如果是英文类型字段,用varchar,如英文名,文件名/地址,用户名等
其他的字段,如描述,备注,说明等可采用nvarchar。
其他类型,SQL SERVER 类型参考表:
| 字段类型 | 描述 |
| bit | 0或1的整型数字 |
| int | 从-2^31(-2,147,483,648)到2^31(2,147,483,647)的整型数字 |
| smallint | 从-2^15(-32,768)到2^15(32,767)的整型数字 |
| tinyint | 从0到255的整型数字 |
| decimal | 从-10^38到10^38-1的定精度与有效位数的数字 |
| numeric | decimal的同义词 |
| money | 从-2^63(-922,337,203,685,477.5808)到2^63-1(922,337,203,685,477.5807)的货币数据,最小货币单位千分之十 |
| smallmoney | 从-214,748.3648到214,748.3647的货币数据,最小货币单位千分之十 |
| float | 从-1.79E+308到1.79E+308可变精度的数字 |
| real | 从-3.04E+38到3.04E+38可变精度的数字 |
| datetime | 从1753年1月1日到9999年12日31的日期和时间数据,最小时间单位为百分之三秒或3.33毫秒 |
| smalldatetime | 从1900年1月1日到2079年6月6日的日期和时间数据,最小时间单位为分钟 |
| timestamp | 时间戳,一个数据库宽度的唯一数字 |
| uniqueidentifier | 全球唯一标识符GUID |
| char | 定长非Unicode的字符型数据,最大长度为8000 |
| varchar | 变长非Unicode的字符型数据,最大长度为8000 |
| text | 变长非Unicode的字符型数据,最大长度为2^31-1(2G) |
| nchar | 定长Unicode的字符型数据,最大长度为8000 |
| nvarchar | 变长Unicode的字符型数据,最大长度为8000 |
| ntext | 变长Unicode的字符型数据,最大长度为2^31-1(2G) |
| binary | 定长二进制数据,最大长度为8000 |
| varbinary | 变长二进制数据,最大长度为8000 |
| image | 变长二进制数据,最大长度为2^31-1(2G) |
今天的分享到此结束,有需要的可以关注留言讨论
能帮朋友解决问题的记得给个关注支持一下,以后将多多分享SQL SERVER 相关知识
关于SQL SERVER 字段类型char(n) , nchar(n) , varchar(n) , nvarchar(n)的更多相关文章
- sql server数据库中char、nchar、varchar、nvarchar的选择
在数据库中,字符型的数据是最多的,可以占到整个数据库的80%以上.为此正确处理字符型的数据,对于提高数据库的性能有很大的作用. 在字符型数据中,用的最多的就是Char与Varchar两种类型.前面的是 ...
- SQL Server 字段类型 decimal(18,6)小数点前是几位?记一次数据库SP的BUG处理
原文:SQL Server 字段类型 decimal(18,6)小数点前是几位?记一次数据库SP的BUG处理 SQL Server 字段类型 decimal(18,6)小数点前是几位? 不可否认,这是 ...
- SQL中char、nchar、varchar、nvarchar、text概述【转】
1. char char是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值.当你输入的字符大于指定的数时,它会截取超出的字符. 2. nchar ...
- char和nchar,varchar和nvarchar的区别(转载)
1) 定义: char: 固定长度,存储ANSI字符,不足的补英文半角空格. nchar: 固定长度,存储Unicode字符,不足的补英文半角空格 varchar: 可变长度, ...
- char、nchar、varchar、nvarchar 的区别
char.varchar.nchar.nvarchar为数据库中常用的字符类型,使用上要综合考虑空间利用率与存取速度.它们的区别如下: 实例解析: 定义char[9].varchar[9].nchar ...
- sql 根据日期模糊查询&SQL Server dateTime类型 模糊查询
曾经遇到这样的情况,在数据库的Meeting表中有PublishTime (DateTime,8)字段,用来存储一个开会时间,在存入时由于要指明开会具体时间,故格式为yyyy-mm-dd hh:mm: ...
- SQL 2005中char、nchar、varchar、ntext and nvarchar(max)的区别
原文地址 MS SQL大值数据类型varchar(max).nvarchar(max).varbinary(max) 在MS SQL2005及以上的版本中,加入大值数据类型(varchar(max). ...
- SQL SERVER 数据有CHAR(10),CHAR(13),CHAR(9)隐藏字符
原文:SQL SERVER 数据有CHAR(10),CHAR(13),CHAR(9)隐藏字符 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/Givi ...
- Oracle/SQL 修改字段类型和长度
标准SQL修改字段类型和长度语句: ALTER TABLE tableName modify column columnName 类型;例如Mysql的修改字段类型语句:alter table tes ...
- SQL Server锁类型
SQL Server锁类型(SQL)收藏 1. HOLDLOCK: 在该表上保持共享锁,直到整个事务结束,而不是在语句执行完立即释放所添加的锁. 2. NOLOCK:不添加共享锁和排它锁,当这个选项生 ...
随机推荐
- [Java SE]Java方法的参数传递机制:值传递
1 案例引入:实验源码 [案例结论] 若调用方client想通过修改方法updateMethod(oldObject)对调用方所在的引用对象(非基本数据类型)oldObject的属性值进行修改,则: ...
- 从0到1手把手教你ASP.NET Core Web API项目配置接口文档Swagger(一)
一.创建ASP.NET Core Web API项目(若项目已创建,则可跳过本节内容) 1.双击打开VS2022. 2.单击"创建新项目",如下图. 3.选择"ASP.N ...
- 最新版本 Stable Diffusion 开源 AI 绘画工具之图生图进阶篇
目录 图生图基本参数 图生图(img2img) 涂鸦绘制(Sketch) 局部绘制(Inpaint) 涂鸦蒙版(Inpaint sketch) 上传蒙版(Inpaint upload) 图生图基本参数 ...
- 【谷粒商城】(一)docker搭建以及项目的创建
网络地址转换-端口转发 VmWare网络配置可以参考这篇:VMWare虚拟机网络连接设置_santirenpc的博客-CSDN博客_vmware 上网设置,真的是被折磨到了.. Docker 虚拟化容 ...
- ROS2的安装与使用(超详细图文教程)
ROS2的安装与使用(超详细图文教程) 如果前面的虚拟机以及Ubuntu22.04镜像都安装好了,根据目录直接跳到ROS2的安装. 资料参考于:古月居 VMware虚拟机的安装 安装地址: 对于不了解 ...
- PowerBI(一) : 如何将powerBI报表嵌入内部web应用程序?
最近做了一个PowerBI报表嵌入内部web应用系统的项目,分享一下主要步骤以及踩坑记录. 微软官网完整教程这里:https://learn.microsoft.com/zh-cn/power-bi/ ...
- devops|中小公司效率为王,没必要度量
之前写过一篇文章<devops|中小公司不要做研发效能度量>,主要是从基础设施方向考虑,因为很多条件都不具备,贸然高投入去做研发效能度量可能达不到我们的预期效果,给出的建议是先做好当下打好 ...
- Vue中插槽的使用
1.作用:让父组件可以向子组件指定位置插入html结构,也是一种组件间通信的方式,适用于 父组件 ===> 子组件 . 2.分类:默认插槽.具名插槽.作用域插槽 3.使用方式: ①默认插槽 ...
- Python 函数返回值及传递列表
函数返回值 函数并非总是直接显示输出,它可以处理一些数据,并返回一个或一组值,函数返回的值被称为返回值. 使用return语句将值返回到调用函数的代码行中 # 返回简单值 def get_format ...
- Grafana 系列-统一展示-3-Prometheus 仪表板
系列文章 Grafana 系列文章 知识储备 Prometheus Template Variables 你可以使用变量来代替硬编码的细节,如 server.app 和 pod_name 在 metr ...