2016-09-15 7 views
4

私はこのようなテーブルを持っている:データにもかかわらず、挿入時に「文字列またはバイナリデータが切り捨てられる」一見フィッティング

CREATE TABLE Customers 
(CustomerID int Identity (1,1) NOT NULL PRIMARY KEY, 
customerName varchar (50), 
Address varchar (255), 
Phone int NOT NULL, 
Email varchar, 
Gender varchar, 
Age int, 
); 

私はこのように、このテーブルに挿入しようとした:

Insert into Customers (customerName, Address, Phones, Email, Gender, Age) 
Values ('Anosa Seunge', 'Keskuskatu 200', 358-3-4180, '[email protected]', 'Male', 19), 
     ('Jihad Christian', '305 - 14th Ave. Suite 3B', 358-1-3688, '[email protected]', 'Female', 29); 
このエラーだと

Msg 8152, Level 16, State 14, Line 4 
String or binary data would be truncated. 
The statement has been terminated. 
+0

は、あなたは私たちがあなたにそれを置くしようとしているフィールドより長い値のどれを教えしますか:

あなたは何かのようにしたいですか? –

+0

@JanDvorak実際、これは良い質問です。なんといっても一見していないようです。 –

+4

不一致があります:あなたは 'Phone'を作成しますが、' Phones'を埋めるようにしてください。これらは実際のコマンドですか? – Breeze

答えて

5

あなたEmailGenderフィールドは長さを持っています1の場合、Gender(おそらくあなたの挿入ステートメントに基づいていないかもしれませんが)にしたいかもしれませんが、確かにEmailではありません。

CREATE TABLE Customers 
(CustomerID int Identity (1,1) NOT NULL PRIMARY KEY, 
customerName varchar (50), 
Address varchar (255), 
Phone int NOT NULL, 
Email varchar(50), 
Gender varchar(50), 
Age int, 
); 
+0

本当ですか?私はサイズがない 'varchar'は' varchar(255) 'に相当すると考えました。 –

+1

@ivan_pozdeev悲しいことに、一部のDBMSではデフォルト値が高くなっていますが、SQLサーバではデフォルトで1に設定されます。 – Takarii

+2

デフォルトの長さは用途によって変わります。列と変数の場合は1ですが、パラメータは30です。紛らわしいことについて話してください....簡単な解決策は明白です。 –

関連する問題