2016-09-15 2 views
4

ich eine Tabelle wie folgt haben:trotz der Daten „String oder Binärdaten würden abgeschnitten“ bei Einsatz scheinbar passend

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, 
); 

Ich habe versucht, wie dies in dieser Tabelle einfügen:

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); 

und diesen Fehler bekam:

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

Haben Sie uns, uns sagen wollen, welche der Werte länger als das Feld in sie setzen Sie versuchen? –

+0

@JanDvorak eigentlich, das ist eine gute Frage, da keiner von ihnen auf den ersten Blick scheint. –

+4

gibt es eine Diskrepanz: Sie erstellen "Phone", aber versuchen Sie, 'Phones' zu füllen. Sind das die eigentlichen Befehle? – Breeze

Antwort

5

Ihre Email und Gender Felder haben eine Länge von 1, das könnte sein, was Sie wollen für Gender (obwohl wahrscheinlich nicht auf Ihrer Insert-Anweisung basiert), aber ist sicherlich nicht für Email.

Sie wollen so etwas wie:

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

Wirklich? Ich dachte 'varchar' ohne Größe ist äquivalent zu' varchar (255) '. –

+1

@ivan_pozdeev Leider nein, In einigen DBMS haben sie einen Standardwert, der höher ist, aber in SQL Server würde es standardmäßig auf 1 – Takarii

+2

Noch lächerlicher ist die Standardlänge ändert sich abhängig von der Verwendung. Für Spalten und Variablen ist es 1, aber die Parameter sind 30. Sprechen Sie über verwirrend .... die einfache Lösung ist explizit zu sein. –

Verwandte Themen