将约束设置为仅以 0 然后 9 开头并包含 11 位数字?
Set the constraint to start with 0 then 9 only and contain 11 digits?
我目前正在创建一个数据库项目,其中它只接受以“09”开头的有效 phone 数字,其余为任何数字,尽管它应该仅限于 11 个数字,包括 09。随着我下面的代码,它只接受 11 个数字,但即使我尝试了 63256115426 这样的数字,它仍然可以被接受。
([ContactNo]>=(0) AND [ContactNo]<=(9999999999.))
您遇到的第一个问题是您对 phone 数字使用了错误的数据类型,因此您需要使用适合您的 CHAR(11)/VARCHAR(11)
的数据类型。
然后您需要创建 constraint 如下:
CREATE TABLE MyTable (
ContactNo varchar(255)
CONSTRAINT CK_ContactNo2
CHECK (ContactNo LIKE '09[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
);
INSERT INTO MyTable(ContactNo) VALUES ('11111') -- Fail
INSERT INTO MyTable(ContactNo) VALUES ('09123456789')-- Succeed
如果您不重新创建 table.
,请不要忘记删除上一个
您的 phone 联系人需要使用 CHAR(11) 而不是任何数字数据类型,因为第一个 0 将在数学上被删除。
如我所见,您的约束匹配数字数据类型而不是 char 字符串。
使用正确的数据类型,Sandra Guilep Zouaoui Zandeh 给出的约束是正确的。
仅当需要计算数据时,才必须为任何列采用数字数据类型。据我所知,我从未见过 phone 数字的任何微积分...
我目前正在创建一个数据库项目,其中它只接受以“09”开头的有效 phone 数字,其余为任何数字,尽管它应该仅限于 11 个数字,包括 09。随着我下面的代码,它只接受 11 个数字,但即使我尝试了 63256115426 这样的数字,它仍然可以被接受。
([ContactNo]>=(0) AND [ContactNo]<=(9999999999.))
您遇到的第一个问题是您对 phone 数字使用了错误的数据类型,因此您需要使用适合您的 CHAR(11)/VARCHAR(11)
的数据类型。
然后您需要创建 constraint 如下:
CREATE TABLE MyTable (
ContactNo varchar(255)
CONSTRAINT CK_ContactNo2
CHECK (ContactNo LIKE '09[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
);
INSERT INTO MyTable(ContactNo) VALUES ('11111') -- Fail
INSERT INTO MyTable(ContactNo) VALUES ('09123456789')-- Succeed
如果您不重新创建 table.
,请不要忘记删除上一个您的 phone 联系人需要使用 CHAR(11) 而不是任何数字数据类型,因为第一个 0 将在数学上被删除。
如我所见,您的约束匹配数字数据类型而不是 char 字符串。
使用正确的数据类型,Sandra Guilep Zouaoui Zandeh 给出的约束是正确的。
仅当需要计算数据时,才必须为任何列采用数字数据类型。据我所知,我从未见过 phone 数字的任何微积分...