[英]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.