0

私は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

元の構造テーブル 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)

クエリが間違っていることはわかっていますが、エラーを修正して正しい結果を得るために手伝ってもらえますか?

*私の英語がうまくない場合は申し訳ありません

4

1 に答える 1

0

NOAddress が常に で始まり、その後に数値が続くことを検証する場合は、

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
)
于 2013-12-17T03:38:27.680 に答える