关于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:不添加共享锁和排它锁,当这个选项生 ...
随机推荐
- Quartz 简单使用
Scheduler 每次执行,都会根据JobDetail创建一个新的Job实例,这样就可以规避并发访问的问题(jobDetail的实例也是新的) Quzrtz 定时任务默认都是并发执行,不会等待上一次 ...
- Python程序笔记20230304
抛硬币实验 random 模块 import random random.randint(a, b) 返回一个随机整数 N,范围是:a <= N <= b random.choice(&q ...
- 【Vue项目】商品汇前台(二)进度条插件+Vuex模块化仓库+函数的防抖与节流+路由传参
前言 1 nprogress进度条的使用 当请求发出进度条出现并向前走,请求成功后进度条消失.nprogress是一种进度条插件 1.1 nprogress进度条插件安装 npm i --save n ...
- day01-Redis入门
Redis入门 1.初始Redis 1.1认识NoSQL SQL(关系型数据库) NoSQL(非关系型数据库) 数据结构 结构化(Structured) 非结构化 数据关联 关联的(Relationa ...
- C# 从0到实战 基本类型
C#语言的基本类型 与大多数编程语言一样,C#也有自己的基本类型,也称为内置类型.下面的表格就简单阐述了这些类型. C# 类型关键字 .NET 类型 bool System.Boolean byte ...
- Django框架简单搭建增删改查页面 Django请求生命周期流程图
目录 Django框架简单搭建增删改查页面 一.前期的配置文件以及连接MySQL的基本准备 二.在数据库中准备好数据 三.将MySQL的数据展示到页面(简单认识HTML模板语法 for循环) 在Dja ...
- 从 API 网关聊到 API 管理
在 API 管理中,通常会有这些痛点: 1.企业不清楚到底有多少个API,无法形成API资产管理等问题. 2.API在不同集群的生命周期问题. 3.API运行状态监控和告警问题. 4.API请求限流. ...
- Godot报错 Node not found: "SubViewport"[一问随笔]
问题: 使用TextureRect显示SubViewport的内容,结果发生了如下报错 E 0:00:01:0007 get_node: Node not found: "SubViewpo ...
- 获取电脑的网络连接状态(三)Ping
网络连接判断,使用ping测试获取: 1 private static async Task<bool> IsPingSuccess() 2 { 3 try 4 { 5 using (Pi ...
- (亲自实践)解决安装weditor报错UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xad in position 825
升级weditor时,报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xad in position 825: illegal multib ...