数据库
首页 > 数据库> > SQL中的数字、字母和汉字

SQL中的数字、字母和汉字

作者:互联网

知识点001

当变量的数据类型为VARCHAR时,变量赋值后,变量中的字符所占字节数,数字和字母是1个bytes,汉字是2个bytes;

当变量的数据类型为NVARCHAR时,变量赋值后,变量中的字符所占字节数,数字、字母和汉字,均为2个bytes.

知识点002

假定变量的数据类型是VARCHAR(N)  ,含义是它能存储的变量长度是N个bytes(注意,不是bit)

例如SQL语句:DECLARE  name  VARCHAR(10),  指变量name的长度是10个字节。

我们知道,一个汉字占2个bytes,假如我们设计一个驾校管理系统,设计数据库的时候,将数据表字段name的数据类型设为VARCHAR(10)

10个字节,最多只能保存5个汉字,如果系统需要保存的人名长度大于5个汉字(比如俄罗斯总统普京,全名【弗拉基米尔·弗拉基米罗维奇·普京】,14个汉字,2个·字符),系统就会出问题。

值得注意的是,下面这个数据类型的长度问题。

假定变量的数据类型为NVARCHAR(N),含义是它能存储的变量长度是(2*N)个bytes.

SQL代码验证。

1 --汉字
2 CREATE TABLE dbo.Test1 (c1 NVARCHAR(4));  
3 INSERT dbo.Test1 VALUES ('美人她爹');  
4 SELECT DATALENGTH(c1) AS Bytes_of_Column_C1 FROM dbo.Test1;
5 
6 CREATE TABLE dbo.Test2 (c2 VARCHAR(8));  
7 INSERT dbo.Test2 VALUES ('美人她爹');  
8 SELECT DATALENGTH(c2) AS Bytes_of_Column_C2 FROM dbo.Test2;

执行结果:

1 --数字
2 CREATE TABLE dbo.Test3 (c3 NVARCHAR(4));  
3 INSERT dbo.Test3 VALUES ('1234');  
4 SELECT DATALENGTH(c3) AS Bytes_of_Column_C3 FROM dbo.Test3;   
5 
6 CREATE TABLE dbo.Test4 (c4 VARCHAR(8));  
7 INSERT dbo.Test4 VALUES ('12345678');  
8 SELECT DATALENGTH(c4) AS Bytes_of_Column_C4 FROM dbo.Test4; 

执行结果:

1 --字母
2 CREATE TABLE dbo.Test5 (c5 NVARCHAR(4));  
3 INSERT dbo.Test5 VALUES ('abcd');
4 SELECT DATALENGTH(c5) AS Bytes_of_Column_C5 FROM dbo.Test5;  
5 
6 CREATE TABLE dbo.Test6 (c6 VARCHAR(8));  
7 INSERT dbo.Test6 VALUES ('abcdefgh');
8 SELECT DATALENGTH(c6) AS Bytes_of_Column_C6 FROM dbo.Test6;

执行结果:

 

标签:VARCHAR,变量,dbo,Bytes,字母,数据类型,汉字,bytes,SQL
来源: https://www.cnblogs.com/fatherofbeauty/p/16096952.html