sql / sybase varchar长度

时间:2015-06-19 21:52:20

标签: sql sybase

所以我试图为文档制作代码。所以,如果我把01234567890和1234567890放在桌子上,他们应该待在那里。但当我把12345667890然后看表时,那个数字是不同的:1234566789(零已经消失!)

加上长度必须为11。

如果你能帮助我/了解我,谢谢你。

create table DOCTORS(
    fullname varchar(35) not null,
    document varchar(11) not null,
    salary bigint null,
    homeaddress varchar(35) null, 
    phone bigint not null, 
    cellphone bigint not null,
    speciality varchar(20) not null,
    birthdate date not null,
    gradedate date not null,
    workingdate date not null,
    constraint pk primary key (document) and check(document between '0' and '99999999999'),
    constraint validCellphone  check (cellphone between 3000000000 and 3029999999 or cellphone between 3100000000 and 3129999999 or cellphone between 3150000000 and 3169999999),
    constraint validSpeciality check (speciality in('Medicina general','Ginecologia','Traumatologia','Pediatria')),
    constraint validDates  check (birthdate < gradedate and birthdate < workingdate and gradedate< getdate() and workingdate< getdate() and gradedate<workingdate),
    constraint antiquity check (datediff(dd, gradedate, getdate() )>1461),
    constraint validPhone check(phone between 1000000 and 9999999)
);
GO>

1 个答案:

答案 0 :(得分:0)

如果您之前尝试过INT

  

01234567890

不是数字。它是一个字符串。

  

1234567890

是数字。

SQL能够识别出不需要那些额外的零来定义数字,因此它会忽略它们。如果你想将值显示为应用程序的01234567890,我建议在应用程序端进行格式化。这样,如果要进行添加,聚合或其他计算,存储在SQL中的数字仍然是一个数字。如果你真的必须将它存储为&#39; 01234567890&#39;,你需要将其转换为字符字段; charvarcharnvarcharnchar