nvarchar 和varchar区别

article/2025/9/30 23:20:25

有时候设计字段的时候,碰到nvarchar和varchar时候,是有点犹豫。所以今天就来探个究竟把。

     (一)  varchar是非Unicode可变长度类型,nvarchar是Unicode编码可变长度类型

复制代码

DECLARE @name AS VARCHAR(50)='我是中国人test'
SELECT @name AS Name,
DATALENGTH(@name) AS [Length]

 

DECLARE @nname AS NVARCHAR(50)='我是中国人test'
SELECT @nname AS Name,
DATALENGTH(@nname) AS [Length]

复制代码

    (二)它们两者的最大长度不一样

        nvarchar的最大值是4000

       varchar最大值是8000

       (三) varchar能存储的字节数就是它的长度,nvarchar能存储的字节数是它的长度乘2

复制代码

CREATE TABLE Test
(vStr varchar(10),nStr nvarchar(10)
)--对于数字
INSERT INTO [dbo].[Test] VALUES('1234567890','1234567890')--对于字母
INSERT INTO [dbo].[Test] VALUES('abcdefghik','abcdefghik')--对于汉字
INSERT INTO [dbo].[Test] VALUES('我是中国人','我是中国人我爱我祖国')--对于汉字和字母
INSERT INTO [dbo].[Test] VALUES('我是中国zz','我是中国人zhang')

复制代码

 

     (四) 实际开发中,如何选择,到底是用哪个好呢?

        总的来说,我是比较推崇使用nvarchar

         有人说,varchar比nvarchar更省空间,应该更多的用varchar。但是我不是很赞同这个观点,首先,现在空间相对来说已经不是那么缺少了,没有必要太纠结于空间这个了,还有一点就是现在的操作系统基本上内部解析基本上都是用Unicode编码的,使用了nvarchar你可以避免每次从数据库读取或写入时候,进行编码转换,转换需要时间,并且很容易出错。如果出错,恢复回来可没那么简单,并且nvarchar是支持多种语言的。所以我大部分时间做数据库设计的时候都是用nvarchar的。

 


http://chatgpt.dhexx.cn/article/SxMKKMMw.shtml

相关文章

oracle NVARCHAR2 数据类型

参考地址 https://docs.oracle.com/cd/B19306_01/server.102/b14225/ch7progrunicode.htm#sthref807 英语不好的看中文直译 utf8可能会影响性能,因为它是一个可变宽度字符集。NChar字段的空白填充过多会降低性能。考虑使用nvarchar数据类型或更改为nchar数据类型的a…

【ORACLE】谈一谈NVARCHAR2、NCHAR、NCLOB等数据类型和国家字符集

一、背景 一直以来,很多用过ORACLE数据库的开发人员,都知道在ORACLE中,字符类型可以为varchar2,也可以为nvarchar2,但是很多人都不知道这两种类型有什么区别,同样还有char/nchar,clob/nclob这些&#xff0…

Oracle NCHAR与NVARCHAR2 最大字符数和最大字节数

根据官方文档和实验测试整理一下常见问题以及相关结论,以NVARCHAR2为主。 一、 含义及用途 NCHAR和NVARCHAR2都是Unicode数据类型,存储Unicode字符数据。NCHAR和NVARCHAR2数据类型的对应的国家字符集(NLS_NCHAR_CHARACTERSET)只能…

foreach 中如何给数组赋值

最近发现,在foreach中给数组赋值,在foreach外,数组是没有变化的,对此情况,有特定的处理方法,特此记录一下: 如下,就是在foreach中,加上 $res[$k] $v;给$res重新赋值&am…

数组与数组赋值

int类型数组赋值 #include<stdio.h> int main() { int a[] {1,2,3,4,5,7}; printf("a[3]%d", a[3]); return 0; } char类型数组赋值 1.直接字符串赋值 char a[] "q,0/d"; 2.逐个赋值 char b[] { d,b,3,&am…

VBA 不能给数组赋值,其实只是不能给静态数组整体赋值

1 问题&#xff1a;VBA报错&#xff1a;不能给数组赋值&#xff01; 其实并不是 所有数组不能赋值其实是不能给静态数组&#xff0c;整体赋值&#xff01;只是因为当前处理的是一个静态数组 2 什么是静态数组 &#xff08;只是大小静态&#xff01;&#xff01; 赋值可变&…

天呐!java从键盘给数组赋值

开头 该文档在Github上收获5K+star的Java核心神技(这参数,质量多高就不用我多说了吧)非常全面,包含基础知识、Java集合、JVM、多线程并发、spring原理、微服务、Netty 与RPC 、Kafka、日记、设计模式、Java算法、数据库、Zookeeper、分布式缓存、数据结构等等内容非常丰富…

php数组赋值方式,php数组赋值方式

推荐操作系统&#xff1a;windows7系统、PHP5.6、DELL G3电脑 1、两种赋值 (1)传值赋值 在PHP中&#xff0c;传递赋值是默认的传递方式。如果某个变量的值被赋予了另一个变量&#xff0c;那么改变其中一个的值对其他变量没有影响。 (2)引用赋值 引用赋值意味着新变量简单地引用…

在java中给数组赋值,java中给数组赋值的方法

1、数组操作中&#xff0c;可以使用等于()赋值 注意&#xff1a;此时新数组只是指向原数组的存储空间&#xff0c;并没有重新申请新的空间。 实例&#xff1a;public class ArrayTest{ public static void main(String args[]){ // 1 int[] anew int[4]; a[0]1; a[1]2; a[2]3; …

SSDP 服务发现协议

https://blog.csdn.net/braddoris/article/details/41479171 SSDP在Android上的实现 https://blog.csdn.net/iblade/article/details/81948805

【SSDP 协议介绍】

SSDP&#xff0c;即简单服务发现协议&#xff08;SSDP&#xff0c;Simple Service Discovery Protocol&#xff09;&#xff0c;是一种应用层协议&#xff0c;是构成通用即插即用(UPnP)技术的核心协议之一。 实现 简单服务发现协议是在HTTPU和HTTPMU的基础上实现的协议。 按照协…

RSTP和MSTP协议的原理

一.RSTP 1.RSTP&#xff08;Rapid Spanning Tree Protocol&#xff0c;快速生成树协议&#xff09;是STP协议的优化版&#xff0c;协议为802.1w。 2.RSTP具备STP的所有功能 3.RSTP可以实现快速收敛 在某些情况下&#xff0c;端口进入转发状态的延时大大缩短&#xff0c;从而…

简单服务发现协议SSDP【转】

来自&#xff1a;https://blog.csdn.net/wuruixn/article/details/23843877 SSDP:Simple Sever Discovery Protocol,简单服务发现协议是一种应用层协议&#xff08;常用于寻找upnp设备&#xff09;&#xff0c;此协议为网络客户提供一种无需任何配置、管理和维护网络设备服务的…

SIP协议-05 SDP协议

文章目录 1 SDP简介2 SDP协议格式2.1 字段描述2.1.1 Version&#xff08;必选&#xff09;2.1.2 origion&#xff08;必选&#xff09;2.1.3 Session Name&#xff08;必选&#xff09;2.1.4 Connection Data&#xff08;可选&#xff09;2.1.5 Bandwidth&#xff08;可选&…

SDP协议总结

一、基本要求 1、SDP的表示 SDP(Session Description Portocol)会话描述协议&#xff0c;通常通过内容类型为"application/sdp"的MIME来表示。 2、媒体和传送信息 SDP可包括以下媒体信息&#xff1a; 媒体类型&#xff08;音频、视频等&#xff09;&#xff1b;…

简单服务发现协议SSDP

SSDP:Simple Sever Discovery Protocol,简单服务发现协议是一种应用层协议&#xff08;常用于寻找upnp设备&#xff09;&#xff0c;此协议为网络客户提供一种无需任何配置、管理和维护网络设备服务的机制。此协议采用基于通知和发现路由的多播发现方式实现。协议客户端在保留的…

协议--SIP/SDP

参考资料 会话初始协议SIP与SDP简介完整SIP/SDP媒体协商概论-SIP/WebRTC概要 1. 什么是SIP 1.1 关于SIP通话的一个形象比喻 生活中&#xff0c;我们想要找一个人互相聊天&#xff0c;首先你到找到这个人、你的声音得传递到对方&#xff0c;对方能听到你的声音&#xff0c; …

SSDP 简单服务发现协议 .

http://blog.csdn.net/lilypp/article/details/6631951 cache network 网络 algorithm ext service SSDP 简单服务发现协议&#xff0c;是应用层协议&#xff0c;是构成UPnP&#xff08;通用即插即用&#xff09;技术的核心协议之一。它为网络客户端&#xff08;network client…

SSDP Protocol

SSDP 简单服务发现协议&#xff0c;是应用层协议&#xff0c;是构成UPnP&#xff08;通用即插即用&#xff09;技术的核心协议之一。它为网络客户端&#xff08;network client&#xff09;提供了一种发现网络服务&#xff08;network services&#xff09;的机制&#xff0c;采…

SDP协议详细介绍

SDP 协议分析 http://www.cnblogs.com/qingquan/archive/2011/08/02/2125585.html 一、SDP协议介绍 SDP 完全是一种会话描述格式 ― 它不属于传输协议 ― 它只使用不同的适当的传输协议&#xff0c;包括会话通知协议&#xff08;SAP&#xff09;、会话初始协议&#xff08;SIP…