Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SQL中将数据类型限制为6位数字?_Sql_Postgresql_Integer_Constraints_Create Table - Fatal编程技术网

如何在SQL中将数据类型限制为6位数字?

如何在SQL中将数据类型限制为6位数字?,sql,postgresql,integer,constraints,create-table,Sql,Postgresql,Integer,Constraints,Create Table,我有一个银行账户的sql表 CREATE TABLE ( name VARCHAR(100), bsb INTEGER, account_num INTEGER, PRIMARY KEY (bsb, account_num) ); 如何设置一个约束,将BSB限制为只有6位整数,包括000000到999999?我需要约束还是使用不同的数据类型 我知道我可以执行此检查约束,将int的大小限制为6位约束Bank_BSB_CHK check BSB=0,并且BSB一个整

我有一个银行账户的sql表

CREATE TABLE (
    name VARCHAR(100),
    bsb INTEGER,
    account_num INTEGER,
    PRIMARY KEY (bsb, account_num)
);
如何设置一个约束,将BSB限制为只有6位整数,包括000000到999999?我需要约束还是使用不同的数据类型


我知道我可以执行此检查约束,将int的大小限制为6位约束Bank_BSB_CHK check BSB<999999,但BSB可以以0开头,但长度必须为6位。

整数没有固定格式,因此000001和1是相同的值。因此,如果您确实想要一个整数,那么正确的约束是检查BSB>=0,并且BSB一个整数没有固定的格式,因此000001和1是相同的值。因此,如果您真的想要一个整数,那么正确的约束是检查BSB>=0和BSB,因为数据是6位数字的序列,没有数学意义,所以最好使用CHAR6数据类型并对BSB可以采用的模式进行约束。这将是将模式限制为6位的正确约束

CONSTRAINT Bank_Account_BSB_CHK CHECK (bsb SIMILAR TO '[[:digit:]]{6}')

由于数据是6位数字的序列,没有数学意义,因此最好使用CHAR6数据类型并对bsb可以采用的模式进行约束。这将是将模式限制为6位的正确约束

CONSTRAINT Bank_Account_BSB_CHK CHECK (bsb SIMILAR TO '[[:digit:]]{6}')

您是说希望0的bsb为000000吗?我不确定这对整数有什么意义。varchar6不是更好吗?如果您想要前导零,我会使用char数据类型。约束以确保长度为6且仅为数字。我会设置一个<999999的约束,并让前端承担添加前导0(如果缺少)的核心,以确保您有6个数字。或者使用字符数据类型。您是说希望0的bsb为000000吗?我不确定这对整数有什么意义。varchar6不是更好吗?如果您想要前导零,我会使用char数据类型。约束以确保长度为6且仅为数字。我会设置一个<999999的约束,并让前端承担添加前导0(如果缺少)的核心,以确保您有6个数字。或者使用char数据类型。它在问题标记为asIt的PostgreSQL中工作,在问题标记为asIt的PostgreSQL中工作