关于SQL Server 2000 Varchar长度的一个问题!!请高手解答

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于SQL Server 2000 Varchar长度的一个问题!!请高手解答相关的知识,希望对你有一定的参考价值。

这个情况
....

VARCHAR是一种比CHAR更加灵活的数据类型,同样用于表示字符数据,但是VARCHAR可以保存可变长度的字符串。其中M代表该数据类型所允许保存的字符串的最大长度,只要长度小于该最大值的字符串都可以被保存在该数据类型中。因此,对于那些难以估计确切长度的数据对象来说,使用VARCHAR数据类型更加明智。VARCHAR数据类型所支持的最大长度也是255个字符。

--------摘自<百度百科>

所以,你定的长度8000也没用,因为它最多只能为255个字符,至于你返回的只有254个就不知道了.其实如果你非要存储大量的数据的话,建议你用
Text
类型,这个最多可以存储2GB的数据,当然,如果你没有必要存放那么多东西,就建议你用nvarchar了,这个比varchar灵活
.
而且也不是很占资源,毕竟数据库资源也是很重要的..
参考技术A 1、SqlServer是支持Varchar(8000)
的,最多8000个字符,4000个汉字;
2、你的问题在于:你用Varchar(8000)的变量,但是你的数据库该字段的定义长度是varchar(254)吧?所以最后存储时会被截断。把该字段的长度修改为varchar(8000)即可。
参考技术B VARCHAR数据类型所支持的最大长度也是255个字符~你写个8000和255一个效果哇~

Sql Server快速建表


use MyDatabase

create table 学生表

(

学号 varchar(16) primary key,

姓名 varchar(8),

性别 char(2) check (性别 IN (男,女)),

出生日期 date,

所在系 varchar(20),

专业  varchar(20),

班号 varchar(10),

联系号码 varchar(20),

QQ号码 varchar(15),

通讯地址 varchar(20)

)

create table 课程表

(

课程号 varchar(16) primary key,

课程名 varchar(30) NOT NULL,

学分   tinyint check(学分 between 1 and 8),

开课学期 tinyint check(开课学期 between 1 and 12),

课程性质 varchar(4) check(课程性质 in (必修,选修)),

考试性质 varchar(4) check(考试性质 in (考试,考查)),

授课时数 tinyint check(授课时数 <=68),

实践时数 tinyint check(实践时数 <=68),

平时成绩比例 numeric(1,1)

)

create table 教师表

(

教师号 varchar(16) primary key,

教师名 varchar(8) not null,

性别 char(2) check(性别 in (男,女)),

职称 varchar(6) check(职称 in (助教,讲师,副教授,教授)),

学历 varchar(6) check(学历 in(本科,硕士,博士,博士后)),

出生日期 date,

所在部门 varchar(30),

联系号码 varchar(20),

通讯地址 varchar(20)

)

create table 选课表

(

学号 varchar(16) not null,

课程号 varchar(16) not null,

选课学年 varchar(4),

选课学期 char(1) check(选课学期 like [12]),

primary key (学号,课程号,选课学年,选课学期),

foreign key(学号) REFERENCES 学生表(学号),

foreign key(课程号) REFERENCES 课程表(课程号)

)

create table 成绩表

(

学号 varchar(16),

课程号 varchar(16),

考试次数 tinyint check(考试次数 between 1 and 3),

平时成绩 tinyint,

考试成绩 tinyint,

总评成绩 tinyint,

primary key (学号,课程号),

foreign key(学号) REFERENCES 学生表(学号),

foreign key(课程号) references 课程表(课程号)

)

create table 授课表

(

课程号 varchar(16) not null,

教师号 varchar(16) not null,

学年 varchar(4),

学期 tinyint,

主讲时数 tinyint,

辅导时数 tinyint,

带实验时数 tinyint,

primary key (课程号,教师号,学年,学期),

foreign key(课程号) REFERENCES 课程表(课程号),

foreign key(教师号) REFERENCES 教师表(教师号)

)



以上是关于关于SQL Server 2000 Varchar长度的一个问题!!请高手解答的主要内容,如果未能解决你的问题,请参考以下文章

sql server2000中CONVERT中各个参数的意思

SQL server 数据类型 - Date VS Varchar(n)

SQL Server 2000 中的这个操作数(*= 星号)是啥?

SQL SERVER2000将多行查询结果拼接到一行数据

SQL Server2000字符串截取各种实例

关于SQL SERVER 解析XML遇到的小问题——0xc00ce508