Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Datenbanken » [MSSQL] Warum wird varchar in int umgewandelt? » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen [MSSQL] Warum wird varchar in int umgewandelt?
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Gast
unregistriert
[MSSQL] Warum wird varchar in int umgewandelt? Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo zusammen,

ich beschäftige mich gerade etwas mit Datenbanken. Ich habe nun mit den Befehlen "create database datenbankname" und "create table tabellenname" eine Datenbank mit einigen Tabellen angelegt.
Danach habe ich nun versucht die Tabellen mit dem Befehl "insert into tabellenname values(...);" einzufügen.

Beispiel:

1. Ich habe eine Tabelle "Kunden" mit den Attributen "ID", "Name", "Vorname" und "Strasse". ID ist vom Datentyp Integer und die anderen drei Attribiute sind vom Datentyp Varchar.

Befehl zum Einfügen von Daten:

INSERT INTO Kunden
VALUES(01, 'Mustermann', 'Max', 'Musterstrasse 1');

2. Ich habe eine Tabelle "Auto" mit den Attributen "ID", "Kunde", "Name", "Kennzeichen". ID ist wieder vom Typ Integer, Kunde ebenso (referenziert auf die ID in der Kundentabelle als Fremdschlüssel) und Name sowie Kennzeichen sind wieder vom Typ Varchar.

Befehl zum Einfügen von Daten:

INSERT INTO Auto
VALUES(01, 01, 'VW Golf', 'XY Z 99');

Beide Tabellen befinden sich logischerweise in derselben Datenbank.

Nun tritt folgendes Problem auf:

Ich führe die Abfrage zum Einfügen der Daten in die Tabellen ein (mit mehreren Datensätzen, nicht nur einem). Die Tabelle Kunden wird wie angegeben gefüllt und ich kann sie mir danach problem anschauen und weitere Abfragen auf ihr ausführen.
Bei der Tabelle Auto bekomme ich jedoch folgende Fehlermeldung und sie wird nicht gefüllt:

"Conversion failed when converting the varchar value 'XY-Z99' to data type int."

Wieso wird hier nun versucht varchar in int umzuwandeln? Ich gebe nichts dergleichen an? Ich dachte erst, es liegt vielleicht daran, dass Buchstaben und Zahlen gemixt sind, aber das ist ja bei dem Attribut "Strasse" in der Tabelle "Kunden" ebenfalls der Fall und da gibt es keine Probleme.

Muss ich für solche Fälle vielleicht einen anderen Datentyp wählen oder irgendwas zusätzlich konvertieren?

Das Attribut kommt nur in dieser Tabelle vor und wird sonst nirgendwo referenziert oder sonstiges.

Ich hoffe, jemand kann mir weiterhelfen... smile

Danke im Voraus!
23.10.2015 13:27
as_string as_string ist männlich
Haudegen


Dabei seit: 06.11.2013
Beiträge: 639
Herkunft: Heidelberg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Die Spalte wird halt doch nicht vom Typ VARCHAR sein. Sonst würde er nicht probieren das zu wandeln.
Überprüfe die Definition der vierten Spalten noch einmal ganz im Detail!

Außerdem: Wenn Du Zahlen angibst, kannst Du Dir führende Nullen sparen.

Gruß
Marco

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von as_string: 23.10.2015 14:24.

23.10.2015 14:23 as_string ist offline E-Mail an as_string senden Beiträge von as_string suchen Nehmen Sie as_string in Ihre Freundesliste auf
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo,

der Fehler tritt wahrscheinlich auf, weil der Datentyp der Zielspalte nicht mit dem Datentyp der Quellspalte übereinstimmt. D.h. Du befüllst die Tabelle Auto mit einem SELECT-Statement und irgendwo stimmt die Reihenfolge der Felder nicht oder Du hast aus versehen bei Auto bei anlegen der Tabelle den falschen Datentyp angelegt (sieht aus als wäre es das Kennzeichen?).

Gruß,

Karlito
23.10.2015 14:27 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Gast
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Danke für eure Antworten!
Ich benutze kein Select zum Befüllen sondern nur INSERT INTO wie oben als Beispiel aufgezeigt...
Und der Datentyp ist ziemlich sicher auch varchar...

Hier die Definition der Tabelle:
create table Auto
(

ID INTEGER NOT NULL,

Kunde INTEGER,

Name VARCHAR(50),

Kennzeichen VARCHAR(50),

PRIMARY KEY(ID),

FOREIGN KEY(Kunde) REFERENCES Kunde(ID)

);

Habe nun auch mal die Datenbank komplett neu angelegt und nur die Tabelle ohne Fremdschlüssel eingefügt, aber auch da taucht der Fehler auf..
23.10.2015 14:40
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Wie sieht dein INSERT-Statement aus?

Gruß,

Karlito
23.10.2015 15:03 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Gast
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Genau so wie oben beschrieben:

INSERT INTO Auto
VALUES(01, 01, 'VW Golf', 'XY Z 99');

Nur mit mehreren Werten danach noch, aber es bricht ja dann schon in der ersten Zeile ab.
23.10.2015 15:20
Gast
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Okay, ich habe jetzt noch einmal alles per Hand abgetippt und es geht jetzt.
Keine Ahnung wo der Fehler lag, habe einen Diff gemacht und es ist genau derselbe Text wie vorher. Vielleicht ist bei Copy&Paste irgendwas reingerutscht, was da nichts zu suchen hatte.

Trotzdem danke für die Hilfe!
23.10.2015 15:34
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Freut mich, dass wir helfen konnten Augenzwinkern

Gruß,

Karlito
23.10.2015 15:55 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Datenbanken » [MSSQL] Warum wird varchar in int umgewandelt?