SQL Server - 使用Alter Table函数为现有表添加约束

时间:2013-12-17 03:28:25

标签: sql-server-2008 alter-table check-constraints isnumeric charindex

我对SQL有点麻烦。这是表客户:

ID      Name     Address                Phone
KP001   Bill     Jl Bali NO 27          81976524451
KP002   Jane     Jl Sandang NO 5        81876537521
KP003   Dion     Jl Kebon Jeruk NO 7    81684234913

原始结构表Customer:

CREATE TABLE Customer
(
ID char(5)primary key not null,
Name varchar(20),
Address varchar(30),
Phone varchar(12),
constraint cs2 check (LEN(ID)=5),
constraint cs3 check (ID like 'KP[0-9][0-9][0-9]'),
)

我希望使用Alter Table更改表结构。我想向表Customers添加约束,在'no'之后的地址必须是数字。

首先,在印度尼西亚,街道名称使用“否”作为指示街道号码。并且在'NO'之后需要Customer表。我试过这个查询:

ALTER TABLE Customers WITH NOCHECK
ADD CONSTRAINT cs_address 
CHECK (CHARINDEX('no',Address)>1 AND
ISNUMERIC ( SUBSTRING (Address,7,2)) =1)

我知道查询不正确,但您可以帮我修复错误并获得正确的结果吗?

*对不起,如果我的英语不好

1 个答案:

答案 0 :(得分:0)

如果您要验证地址始终以NO开头,后跟数值,则

ALTER TABLE Customers WITH NOCHECK
ADD CONSTRAINT cs_address
CHECK
(
        CHARINDEX('no', Address) >= 1 
    AND ISNUMERIC(LTRIM(RTRIM
                (SUBSTRING (Address, CHARINDEX('no', Address) + 2, 7)))) = 1
)