社区
疑难问题
帖子详情
sqlserver使用nvarchar不用nchar会对数据库效率有影响吗
漫随天外tian
2018-08-31 09:15:45
sqlserver使用nvarchar不用nchar会对数据库效率有影响吗,例如对数据库的操作会有速度影响吗?例如增删改查
...全文
656
2
打赏
收藏
sqlserver使用nvarchar不用nchar会对数据库效率有影响吗
sqlserver使用nvarchar不用nchar会对数据库效率有影响吗,例如对数据库的操作会有速度影响吗?例如增删改查
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
二月十六
2018-08-31
打赏
举报
回复
实践出真知。看看楼主的实际情况,nchar可能比nvarchar要快,因为长度固定,但是nchar长度固定也造成一些麻烦,存储数据长度不到,会有空格补充,也需要程序处理比较麻烦,如果数据量不大,先不用考虑这些东西
吉普赛的歌
2018-08-31
打赏
举报
回复
看场景:
nchar 占用的字节数固定, 适合于固定位数的数据, 比如性别, 你设置为 nchar(1) 就比 nvarchar(1) 更好, 因为效率高。
再比如说文章标题, 设置为 nchar(300) 就没有 nvarchar(300) 那么好, 因为不是每篇文章的标题都有 300 个字符, 你设置为nchar了浪费空间。
绝大多数的情况用 nvarchar 更合适吧。
基于SQL Server中
char
,n
char
,
var
char
,n
var
char
的
使用
区别
对于程序中的一般字符串类型的字段,SQL Server中有
char
、
var
char
、n
char
、n
var
char
四种类型来对应,那么这四种类型有什么区别呢,这里做一下对比。 1.定长或变长 所谓定长就是长度固定,当要保存的数据长度不够时将自动在其后面填充英文空格,使长度达到相应的长度;有var前缀的,表示是实际存储空间是动态变化的,比如
var
char
,n
var
char
变长字符数据则不
会
以空格填充。 2.Unicode或非Unicode
数据库
中,英文字符只需要一个字节存储就足够了,但汉字和其他众多非英文字符,则需要两个字节存储。如果英文与汉字同时存在,由于占用空间数不同,容易造成混乱,导致读取
sqlserver
字段类型介绍
sqlserver
字段类型介绍
数据库
中,英文字符只需要一个字节存储就足够了,但汉字和其他众多非英文字符,则需要两个字节存储。如果英文与汉字同时存在,由于占用空间数不同,容易造成混乱,导致读取出来的字符串是乱码。Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。而前缀n就表示Unicode字符,比如n
char
,n
var
char
,这两种类型
使用
了Unicode字符集。 n
char
、n
var
char
最多存储4000个字符,不论是英文还是汉字;而
char
、
var
char
最多能存储8000个英文,4000个汉字。可以看出
使用
n
char
、n
var
char
数据类型时
不用
担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。 一般来说,如果含有中文字符,用n
char
/n
var
char
,如果纯英文和数字,用
char
/
var
char
。 字符数据类型是
使用
最多的数据类型。它可以用来存储各种字母、数字符号、特殊符号。一般情况下,
使用
字符类型数据时须在其前后加上单引号’或双引号” 。 在
sqlserver
中编写sql语句,n
char
、n
var
char
都要在字符前面加N,避免出现乱码!!(例如:SET @k=N'abcdefg')
解决繁体-批量转化
var
char
为n
var
char
因最近自己制作的软件需运行在简繁系统中,但
数据库
设计时没有充份考虑,于是做出此脚本批量转换数据类型;此脚本可批量处理
数据库
内所有
char
和
var
char
转换为n
char
和n
var
char
,已集成重建主键,约束,索引,此脚本没有启用事务,运行前请备份原
数据库
或手动增加事务
数据库
+Java课设图书管理系统
SQLServer
+java课程设计:图书管理系统+介绍,部分内容CREATE TABLE dbo.读者( 借书证号 n
char
(6) NOT NULL, 类别 n
char
(2) NULL, 已借书数 tinyint NULL, 最多借书数 tinyint NULL, 编号 n
var
char
(9) NULL, 姓名 n
var
char
(10) NULL, 系别 n
var
char
(10) NULL, 密码 n
var
char
(10) NULL, PRIMARY KEY CLUSTERED ( 借书证号 ASC) ) CREATE TABLE dbo.图书( 书号 n
var
char
(15) NOT NULL, ISBN n
var
char
(15) NULL, 书名 n
var
char
(20) NULL, 作者 n
var
char
(20) NULL, 出版社 n
var
char
(50) NULL, 出版年 n
char
(4) NULL, 状态 n
char
(2) NULL, 书库 n
var
char
(2) NULL, PRIMARY KEY (书号) ) CREATE TABLE dbo.借阅( 借书证号 n
char
(6) NOT NULL, 书号 n
var
char
(15) NOT NULL, 借出日期 smalldatetime NOT NULL, 还书日期 AS (dateadd(month,6,借出日期)), PRIMARY KEY (书号) ) CREATE TABLE dbo.管理员( 姓名 n
var
char
(10) NOT NULL, 密码 n
var
char
(10) NULL )
sqlserver
char
,n
char
var
char
n
var
char
的区别
在选择数据类型时,需要根据存储的数据特性和需求来决定
使用
哪种类型。如果需要存储 Unicode 字符,应该选择 n
char
或 n
var
char
类型;如果需要固定长度的存储空间,可以选择
char
或 n
char
;如果需要可变长度的存储空间,可以选择
var
char
或 n
var
char
。在 SQL Server 中,
char
、n
char
、
var
char
和 n
var
char
是用于存储文本数据的数据类型。n
char
:(双字节,中英文都占2个字节)
char
:(中文占2个字节,英文1个)
疑难问题
22,209
社区成员
121,730
社区内容
发帖
与我相关
我的任务
疑难问题
MS-SQL Server 疑难问题
复制链接
扫一扫
分享
社区描述
MS-SQL Server 疑难问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章