日期:2014-05-17  浏览次数:21104 次

不能对数据类型 int 指定列宽。 age int (4)
各位帮忙看看,这里面哪错了呢     环境  SQL  2005 
create table student(
student_id  char (8)  not null,
student_name nvarchar(8)  not null,
sex         nvarchar(1)     not   null,  /// 刚才是用得是    bit (1)   也说无法分配位宽
age         int (4)     not null,
class_id    char (6)    not null ,
department_id  char(6)   not null,
student_addr   nvarchar(40)  not null

)
消息 2716,级别 16,状态 1,第 1 行
第 4 个列、参数或变量: 不能对数据类型 int 指定列宽。



------最佳解决方案--------------------
sex nvarchar(1) not null, /// 刚才是用得是 bit (1) 也说无法分配位宽
age int (4) not null,

bit和int型字段不需要指定长度.
另nvarchar(1)不如改成nchar(1),只有一位的,无须使用变长字符串.
------其他解决方案--------------------
注释用--不是///

类型不固定时,最好用varchar
------其他解决方案--------------------
SQL的数据类型
http://msdn.microsoft.com/zh-cn/library/ms187752(v=SQL.90).aspx
------其他解决方案--------------------
create table student(
student_id char (8) not null,
student_name nvarchar(8) not null,
sex nvarchar(1) not null,-- /// 刚才是用得是 bit (1) 也说无法分配位宽
--如果要用bit类型,直接就是 bit ,不要加1
age int (4) not null,
class_id char (6) not null ,
department_id char(6) not null,
student_addr nvarchar(40) not null
)

------其他解决方案--------------------
create table student(
student_id char (8) not null,
student_name nvarchar(8) not null,
sex nvarchar(1) not null, --/// 刚才是用得是 bit (1) 也说无法分配位宽
age int  not null,
class_id char (6) not null ,
department_id char(6) not null,
student_addr nvarchar(40) not null

)

------其他解决方案--------------------
int本来就是4  不用指定了吧
------其他解决方案--------------------
create table student(
    student_id char (8) not null,
    student_name nvarchar(8) not null,
    sex nvarchar(1) not null, ----/// 刚才是用得是 bit (1) 也说无法分配位宽
    age int  not null,
    class_id char (6) not null ,
    department_id char(6) not null,
    student_addr nvarchar(40) not null

)

------其他解决方案--------------------
把int后面的4去掉就行了,不需要定义长度
------其他解决方案--------------------
int在sql server和oracle中不需要定义长度,在mysql中需要定义 把(4)去掉就好了