2017-11-15 7 views
2

私はSQL Serverでこれが間違っていると表示されるのはなぜですか?

INSERT INTO User (username, joinDate, email, password) 
VALUES ('Kristian', '15/11/2017', '[email protected]', 'password') 

のSQL Server 2014は、キーワードの近くにエラー

不適切な構文 'ユーザー' をスロー

次のクエリを実行するテーブル "ユーザー"

id   int 
username varchar(40) 
joindate date 
email  varchar(60) 
password nvarchar(100) 

を持っています

私は間違っています?

+3

'user'で予約語(https://docs.microsoft.com/en-us/sql/t- sql/language-elements/reserved-keywords-transact-sql)。競合がないように、テーブルの名前を変更します。私はタイポグラフィのような問題を終わらせることに投票します。 –

+1

私は@GordonLinoffに同意します –

+0

**一般的に** [SQL Serverの予約済みのキーワード]を避けてください。(https://docs.microsoft.com/en-us/sql/t-sql/language-elements/reserved- keywords-transact-sql)を独自の識別子として使用することができます。 'User'の代わりに' MySystemUser' .... –

答えて

5

"User"は予約語なので、角カッコで囲む必要があります。

INSERT INTO [User] (username, joinDate, email, password) 
VALUES ('Kristian', '15/11/2017', '[email protected]', 'password') 

は同様にかなり強くあなたがそうを行うことができます 場合、アクションの望ましい当然だろうテーブル名を変更し、コメントで指摘しました。

+1

です。 。非常に悪いアドバイス。 OPはテーブルの名前を変更する必要がありますので、競合はありません。 –

1

あなたは次の理由

  1. User(同様にPassword)のエラーを取得しているが、システム定義されたキーワードです。そのため、推奨されていないテーブル名や列名に使用する場合は、角括弧で囲んで指定する必要があります。

  2. DD/MM/YYYY形式で指定します。 MM/DD/YYYYに変更してください。

は、私は以下のようにクエリを変更し、それが私の作品

INSERT INTO [User] (username, joinDate, email, [password]) 
VALUES ('Kristian', '11/15/2017', '[email protected]', 'password') 
+2

私は、SQLで文字列として日付を使用する場合は、地域の設定によってDD/MM/YYYYまたはMM/DD/YYYYのいずれかになる可能性があるため、YYYY/MM /しかし、SQLはYYYY/MM/DDの形式と一貫しています。もう1つの方法は、DD MMM YYYYを使用することです.DD MMM YYYYは決して異なる日付形式 – Jaques

関連する問題