SQL Server中电话号码的约束

Ser*_*ale 2 sql-server check-constraints

电话号码的约束为7位数.如何检查它是否是SQL Server中的7位数?

CREATE TABLE Customer
(
    C_ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
    C_Name VARCHAR(255) NOT NULL,
    Phone INT 
);
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 6

不要将电话号码存储为整数.例如,一些有效的数字可以从0开始 - 如果不是今天,也许将来.要进行验证检查,您可以使用like:

CREATE TABLE Customer (
    C_ID INT NOT NULL IDENTITY(1, 1) PRIMARY KEY,
    C_Name VARCHAR(255) NOT NULL,
    Phone CHAR(7), -- you might not want to have such a precise length
    CONSTRAINT chk_phone CHECK (phone not like '%[^0-9]%') -- check that no number is not a digit 
);
Run Code Online (Sandbox Code Playgroud)

或者,您可以写:

CONSTRAINT chk_phone CHECK (phone like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]') -- check that no number is not a digit 
Run Code Online (Sandbox Code Playgroud)