将约束设置为仅以 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 数字的任何微积分...