`
yiyeqinghuasoon
  • 浏览: 680978 次
文章分类
社区版块
存档分类
最新评论

实例分析varchar和nvarchar的区别--【叶子】

 
阅读更多

一、整体介绍

1varchar(n)

(1) 长度为n个字节的可变长度且非Unicode 的字符数据。

(2) n 必须是一个介于18,000 之间的数值。

(3) 存储大小为输入数据的字节的实际长度,而不是n个字节。

2nvarchar(n)

(1) 包含n个字符的可变长度Unicode字符数据。

(2) n 的值必须介于14,000 之间。

(3) 字节的存储大小是所输入字符个数的两倍。

二、实例分析

我们首先定义两个不同类型的字符串,来看一下他们的字符数和字节数:

DECLARE @sql_one varchar(200)

SET @sql_one='China中国Beijing北京Olympics奥林匹克'

DECLARE @sql_two nvarchar(200)

SET @sql_two='China中国Beijing北京Olympics奥林匹克'

select dbo.[chinesecount_new]( @sql_two)

SELECT DATaLENGTH(@sql_one) '@sql_one字节数',

LEN(@sql_one) '@sql_one字符数',

DATaLENGTH(@sql_two) '@sql_two字节数',

LEN(@sql_two) '@sql_two字符数'

/*结果

@sql_one字节数@sql_one字符数@sql_two字节数@sql_two字符数

----------- ----------- ----------- -----------

36 28 56 28

*/

三、误区分析

如果varchar(n)中n的范围是1~8000,而nvarchar(n)中n的范围是1~4000,是不是varchar就比nvarchar存放的多呢,当然不是。

DECLARE @one varchar(10)

SET @one='忽如一夜春风来千树万树梨花开'

DECLARE @two nvarchar(10)

SET @two='忽如一夜春风来千树万树梨花开'

SELECT @one 'varchar', @two 'nvarchar'

/*结果

varchar nvarchar

---------- ----------

忽如一夜春 忽如一夜春风来千树万

*/

我们可以清楚地看到 varchar(10)只能放5个汉字,而nvarchar(10)能放10

也就是说varchar(8000)nvarchar(4000)存放的汉字的最大上限是一样的。

如果是字母或是数字就不一样了!

DECLARE @one varchar(10)

SET @one='abcdefghijklmn'

DECLARE @two nvarchar(10)

SET @two='abcdefghijklmn'

SELECT @one 'varchar', @two 'nvarchar'

/*结果

varchar nvarchar

---------- ----------

abcdefghij abcdefghij

*/

四、使用规则

由于varchar(n)是非Unicode 的数据类型,而nvarchar(n)是Unicode 的数据类型。所以如果是纯字母和数字的字符串用varchar,而有汉字或是韩文的用nvarchar。这样既可以不影响效果,有最大限度的避免了乱码。

注:Unicode(统<chmetcnv unitname="码" sourcevalue="1" hasspace="False" negative="False" numbertype="3" tcsc="1" w:st="on">一码</chmetcnv>、万国码、单<chmetcnv unitname="码" sourcevalue="1" hasspace="False" negative="False" numbertype="3" tcsc="1" w:st="on">一码</chmetcnv>)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

© 【叶子】http://blog.csdn.net/maco_wang 原创作品,转贴请注明作者和出处,留此信息。

分享到:
评论

相关推荐

    SQL数据类型nchar_char_varchar与nvarchar区别

    nchar_char_varchar与nvarchar有何区别?

    解决繁体-批量转化varchar为nvarchar

    因最近自己制作的软件需运行在简繁系统中,但数据库设计时...此脚本可批量处理数据库内所有char和varchar转换为nchar和nvarchar,已集成重建主键,约束,索引,此脚本没有启用事务,运行前请备份原数据库或手动增加事务

    Sqlserver中char,nchar,varchar与Nvarchar的区别分析

    这四个数据类型都有各自的特点和用途,下面我们逐一详细分析它们的区别。 1. **char类型**: - char是固定长度的字符数据类型,无论实际存储的数据长度如何,都会占用预先指定的字节数。例如,char(10)会始终占用...

    SQL Server数据类型char、nchar、varchar、nvarchar的区别浅析

    本文主要探讨了四个常见的字符数据类型:char、nchar、varchar和nvarchar,它们各自具有独特的特性和用途。 1. **char数据类型** - `char`是一种固定长度的非Unicode字符数据类型,适用于存储长度恒定的文本信息。...

    sql中varchar和nvarchar的区别与使用方法

    问: sql server中的varchar和Nvarchar有什么区别啊,varchar好像是一个英文和一个汉字都站两个字节,而Nvarchar则是一个英文占一个字节,汉字占两个字节。可是这个对asp程序有什么影响? 答: varchar(n) 长度为 ...

    varchar 和varchar2之间的联系和区别

    ### VARCHAR与VARCHAR2之间的联系和区别 在数据库设计与应用中,正确理解并选择合适的数据类型对于确保数据的准确存储及高效查询至关重要。在Oracle数据库中,`VARCHAR`与`VARCHAR2`是两种常见的用于存储可变长度...

    SQL Server中,varchar和nvarchar如何选择?

    每个`nvarchar`字符将占用两倍于`varchar`的空间,这可能会增加数据库的大小,进而影响性能和存储成本。 在选择`varchar`还是`nvarchar`时,需要权衡以下几个因素: 1. **字符集需求**:如果你的应用程序主要处理...

    基于SQL Server中char,nchar,varchar,nvarchar的使用区别

    对于程序中的一般字符串类型的字段,SQL Server中有char、varchar、nchar、nvarchar四种类型来对应,那么这四种类型有什么区别呢,这里做一下对比。 1.定长或变长 所谓定长就是长度固定,当要保存的数据长度不够时将...

    SQL中varchar和nvarchar的基本介绍及其区别

    在SQL中,`varchar`和`nvarchar`是两种常见的字符数据类型,它们分别用于存储非Unicode和Unicode字符数据。理解这两种类型的区别对于数据库设计和优化至关重要。 `varchar(n)`是可变长度的非Unicode字符数据类型,...

    SQLServer中char、varchar、nchar、nvarchar的区别

    在SQL Server数据库管理系统中,字符数据类型是存储文本信息的基础,包括`char`、`varchar`、`nchar`和`nvarchar`等几种常见的类型。这些数据类型在存储字符串时有着不同的特性和用途,理解它们之间的区别对于正确...

    oracle char,varchar,varchar2的区别和使用方法

    ### Oracle CHAR, VARCHAR, VARCHAR2 的区别与使用方法 在 Oracle 数据库中,字符串类型是极为常见的数据类型之一,主要用于存储文本数据。其中最常用的三种类型包括:`CHAR`, `VARCHAR`, 和 `VARCHAR2`。这三种...

    char、varchar、nchar、nvarchar四种类型的区别

    ### char、varchar、nchar、nvarchar 四种类型的区别 在数据库设计中,选择合适的字段类型对于确保数据的准确性和提高查询效率至关重要。对于字符类型的字段,SQL Server 提供了 `char`、`varchar`、`nchar` 和 `...

    图书管理系统

    student_name nvarchar(50)not null ,--姓名 student_sex nvarchar(50) not null,--性别 student_sdept nvarchar(50)not null,--专业 student_email nvarchar(50)not null,--邮箱 password nvarchar(50),--密码...

    oracle使用dblink高速复制表数据的动态存储过程

    本程序不同步blob和clob字段,玩oracle的人都懂,用sql同步此类数据,速度上不去,此类数据应该要用导出导入的方式提升速度。 具体请参阅程序,可根据自已需要进行修改。 参数说明: CREATE OR REPLACE PROCEDURE ...

    SQL2005中char nchar varchar nvarchar数据类型的区别和使用环境讲解

    本文将详细介绍char、nchar、varchar和nvarchar这四种数据类型的区别以及它们的适用环境。 1. **char**: - char是一种固定长度的非Unicode字符数据类型,长度范围为1到8,000个字节。 - 不论存储的数据实际长度...

    Oracle P/L SQL实现发送Email、浏览网页等网络操作功能

    ------------------------------------------------ 写邮件头和邮件内容------------------------- Procedure p_WriteRawData( ac_Conn in Out Nocopy UTL_SMTP.Connection, as_Partname in VarChar2, ...

Global site tag (gtag.js) - Google Analytics