2017-11-29 3 views
1

私はtransact SQLを学習しています。私がテーブルを作成している間、私は入力する2つの可能性を持っていたいと思っています:M - 男性、W - 女性。Transact SQLのフィールドパターン

この例では、addressと書いてあります。以前はposgresqlを使っていましたが、パターンを設定するのはとても簡単です。

これは私がしようとしているものです:Incorrect syntax near the keyword 'LIKE'.

答えて

1

は、あなたが提供されたリンクに基づいて、あなたが作成することができます。このようなConstraint

CREATE TABLE testTable (sex char(1)); 
ALTER TABLE testTable ADD CONSTRAINT chk_Sex CHECK (sex IN ('M','W')); 

CREATE TABLE testTable (
     sex char(1) LIKE '[M]' OR '[W]', 
) 

が、私はこのエラーメッセージを取得しています

または、1つのステートメントで行うことができます。

CREATE TABLE testTable (sex char(1), CONSTRAINT chk_sex CHECK (sex IN ('M','W'))) 

あるいは:

CREATE TABLE testTable (sex char(1) CHECK (sex IN ('M','W'))) 
+1

または 'TABLE TESTTABLE(セックスチャー(1)CHECK(( 'M'、 'W'))でのSEX)' –

+0

それは動作しますCREATE。どうもありがとう! – sqlMasterSOon

+0

数値型はどうですか?今私は3つの番号だけを入力したいと思います。私はリンクからの例のいくつかの部分を使用しました。 私はこれを作成しました:'制約cbk_sex check( '[0-9] [0-9] [0-9]'))' 私はcharのサイズを(14)に変更しました。 。私はエラーなしで作成できますが、 'insert into testtable(sex)VALUES(213)'を実行したいときは 'INSERT文がCHECK制約" cbsk_sex "と競合しています。競合は、データベース "biblioteka"、テーブル "dbo.testtable"、列 "sex"で発生しました。 'エラーです。何か案は? – sqlMasterSOon

1
CREATE TABLE testTable 
(
    sex CHAR(1) NOT NULL, 
    CONSTRAINT check_sex CHECK (sex IN ('M', 'W')) 
) 
関連する問題