4

チェック制約を使用してSQL Serverでテーブルを作成し、大文字の値セットのみを許可する必要があります

私のコードは次のとおりです:

CREATE TABLE Client(
    clientID INT IDENTITY(1,1) PRIMARY KEY,
    FirstName VARCHAR(30) NOT NULL,
    LastName VARCHAR(30) NOT NULL,
    StreetAddress VARCHAR(50),
    Suburb VARCHAR(25),
    State VARCHAR(4) CHECK (state in ('QLD', 'NSW', 'VIC', 'TAS', 'SA', 'WA', 'NT', 'ACT')),
    PhoneNumber VARCHAR(10)
);

エラーを確認して助けてください

4

2 に答える 2

7

デフォルトでは、SQL Server は大文字と小文字を区別しません。大文字と小文字を区別する照合を適用することで、列を大文字と小文字を区別するように定義できます。

declare @t table (state varchar(4) check (state in ('ok', 'computer')))
insert @t values ('OK') -- No error, case insensitive by default
go
declare @t table (state varchar(4) collate SQL_Latin1_General_CP1_CS_AS 
    check (state in ('ok', 'computer')))
insert @t values ('OK') -- The INSERT statement conflicted with the CHECK constraint

Case Sensitive を表すSQL_Latin1_General_CP1_ CS _ASの CS に注意してください。AS はアクセント センシティブの略です。

于 2013-12-08T11:39:02.550 に答える
0
CREATE TABLE Client(
    clientID INT IDENTITY(1,1) PRIMARY KEY,
    FirstName VARCHAR(30) NOT NULL,
    LastName VARCHAR(30) NOT NULL,
    StreetAddress VARCHAR(50),
    Suburb VARCHAR(25),
    State VARCHAR(4) CHECK (state in ('QLD', 'NSW', 'VIC', 'TAS', 'SA', 'WA', 'NT', 'ACT')) COLLATE SQL_Latin1_General_CP1_CS_AS ,
    PhoneNumber VARCHAR(10)
);
于 2013-12-30T16:55:40.950 に答える