...对于字符串,它很容易...... LENGTH(属性),但是对于整数,LENGTH总是返回“4”表示整数,“8”表示bigints等等。
所以给出这样的陈述:
create table EMPLOYEE (employeeno bigint NOT NULL PRIMARY KEY);
我怎样才能添加一个CHECK子句来检查插入的employeeseno是否正好是6位?
答案 0 :(得分:1)
转换它或首先将其转换为varchar,然后使用length。
答案 1 :(得分:1)
使用检查约束来检查val >= 100000
和val <= 999999
。
如果需要,您可以将其更改为val >= 0
和val <= 999999
。请注意,int
类型不包含有关前导零的任何信息,因此信息在到达数据库时已经丢失。
答案 2 :(得分:1)
就个人而言,我更愿意使用数字约束来检查整数。所以这引出了一个问题,你真的想看一下整数字符串表示的特征长度吗?例如,是否应该允许-100000
?我假设情况并非如此,并提出类似的建议:
create table EMPLOYEE (
employeeno integer
CHECK (employeeno BETWEEN 1000000 AND 999999)
NOT NULL PRIMARY KEY
);
注意我将bigint更改为整数,因为约束必然会阻止添加超出整数精度的值