varchar[(n)] 和nvarchar(n) 及使用unicode的意义

原创 2006年05月21日 12:03:00

varchar[(n)]

长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。varchar 在 SQL-92 中的同义词为 char varying 或 character varying。

nvarchar(n)

包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。nvarchar 在 SQL-92 中的同义词为 national char varying 和 national character varying。

 

 

对于英文来说,ascii码0-127就足以代码所有字符,对于中文而言,则必须使用两个字节(byte)来代表一个字符,具第一个字节必须大于127(所以我们有许程序判断中文都是以ascii码大于127作为条件)
以上用两个字节来表示一个中文的方式,在习惯上称为双字节(即DBCS:Double-ByteCharacterSet),而相对之下,英文的字符码就称为单字节SBCS(Single-ByteCharacterSet)。
虽然双字节(DBCS)足以解决中英文字符混合使用情况,但对于不同字符系统而言,必须经过字符码转换,非常麻烦。例如:中英文混合情况,日文,韩文等等。
为解决这个问题,Apple,Xerox,Microsoft,IBM,Novell,Borland...很多公司联合起来制订了一套可以适用于全世界所有国家的字符码,就称为Unicode
Unicode的特点是:
不管哪一国的字符码均以两个Byte表示,例如"A"在Unicode则是16进制41和00的组合,即4100,高位41(转换为Ascii码即是65=A),
WindowsNT/2000以Unicode来表示字符集,例如你可以看到MSSQLServer中产生的SQL文件可以选择是以Unicode来保存还是以普通格式来保存,如果你以Unicode保存,则在95/98平台许多软件均无法正确读出其格式。
同时你还可以注意到95/98中API定义,许多名称结尾是有一个A的,例如
WriteProfileStringA
而在NT/2000操作系统中,提供了两套API,另外一个命令是WriteProfileStringW,以W结尾的API只适用于NT/2000。(在NT中使用以W结尾的API函数效率比A结尾的要快,因为省去了Unicode和DBCS/SBCS的转换过程)

这样我们经常要用到的判断字符串长度的函数,在NT和95/98下执行结果不同,如下:(下面代码适合于VB,ASP)

95/98中:
len("abc中国")返回7(因为每个中文作为两个Ascii码来看)

nt/2000中:
len("abc中国")返回5(因为每个字符都作为一个Unicode来看)

明天将介绍如何在VB/NT环境下使len("abc中国")返回长度等于7

(PB不存在以上情况,除非你在NT下使用PB的Unicode版本,通常我们大家使用的均是PB的Windows32位版本)
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

varchar(n),nvarchar(n) 长度、性能、及所占空间分析

varchar(n),nvarchar(n) 中的n怎么解释:   nvarchar(n)最多能存n个字符,不区分中英文。   varchar(n)最多能存n个字节,一个中文是两个字节。 所占空...

MySQL数据库数据类型(char(n),varchar(n),nchar(n),nvarchar(n)的区别)

在学习这四种数据库类型时,我们可能会有点搞不清他们中的区别,而至于我们会随便使用其中一个,可能某次运行程序出了错误,都不知道是哪里错了,所以我们有必要将这四种的区别弄明白,让我们在编程的时候,避免一些...

char、nchar、varchar、nvarchar、unicode,非unicode的区别

一 、 nchar     和     nvarchar        nchar     是固定长度 &#...

NVARCHAR 和VARCHAR区别和使用

1、各自的定义:        ► nvarchar(n) : 包含   n   个字符的可变长度   Unicode   字符数据。n   的值必须介于   1  ...
  • yy243
  • yy243
  • 2016-05-14 14:11
  • 129

NVARCHAR 和VARCHAR区别和使用

转自:http://blog.csdn.net/feixianxxx/article/details/4454659 1、各自的定义:        ► nvarchar(n)...

Oracle字段类型char、varchar2、nvarchar2的区别与使用

四个类型都属于变长字符类型, varchar和varchar2的区别在与后者把所有字符都占两字节,前者只对汉字和全角等字符占两字节。 nvarchar和nvarchar2的区别和上面一样,   与上面...

矩阵(n阶方阵)的初等变换 初等矩阵 几何意义

任何一个可逆矩阵A都可以经初等行变换,变换到单位矩阵E。 A也可经初等列变换,变换到E。 A每经过一次初等行变换,就相当于在A的左边乘一个初等矩阵。 A每经过一次初等列变换,就相当于右乘一个初等...

ORACLE CHAR,VARCHAR,VARCHAR2,NVARCHAR类型的区别与使用

ORACLE CHAR,VARCHAR,VARCHAR2,NVARCHAR类型的区别与使用

Oracle CHAR,VARCHAR,VARCHAR2,nvarchar类型的区别与使用

该博客旨在分享IT技术心得和实际工作中遇到问题的解决方法,以下是新浪博客地址http://blog.sina.com.cn/qianyumolu,则为分享经济、行业趋势、心灵文章等,有兴趣的朋友可以踩...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)