簡體   English   中英

SQL Server-使用CHARINDEX和Isnumeric添加約束

[英]SQL Server - Add Constraint using CHARINDEX and Isnumeric

我在使用SQL時遇到了一些麻煩。 這是表Customers:

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

原始結構表客戶:

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更改表結構。 我想向表“客戶”添加約束,“否”后的“地址”必須是數字。

首先,在印度尼西亞,街道名稱使用“ NO”作為指示街道編號。 並且要求客戶表中的“ NO”后面是一個數字。 我已經嘗試過以下查詢:

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

我知道查詢不正確,但是您可以幫助我解決錯誤並獲得正確的結果嗎?

*對不起,如果我的英語不好

正如我在評論中所說,我將表重組為:

CREATE TABLE Customers (
    ID int not null,
    Name varchar(10) not null,
    Address varchar(50) not null,
    Address_No int not null, --Could also be varchar if we need to support leading 0s
    Phone varchar(10) not null,
    Complete_Address as Address + ' NO ' + CONVERT(varchar(10),Address_No),
    constraint CK_Address_No CHECK (Address_No > 0)
)

這將更嚴格地執行約束。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM