Fehler bei der Konvertierung beim konvertieren des nvarchar-Wert 'AAAR78509883' in den int-Datentyp
Ich habe eine nvarchar
Spalte in einer meiner Tabellen, die ich importiert haben, werden von Access. Ich bin versucht zu ändern in int. Zu bewegen, um eine neue Tabelle.
Original Abfrage:
insert into members_exams_answer
select
ua.members_exams_id, ua.exams_questions_id,
ua.members_exams_answers_value, ua.members_exams_answers_timestamp
from
members_exams as me
full join
UserAnswers1 as ua on me.members_exams_username = ua.members_exams_id
full join
exams_questions as eq on eq.exams_questions_id = ua.exams_questions_id
Löst dies einen Fehler aus:
Fehler bei der Konvertierung beim konvertieren des nvarchar-Wert 'AAAR78509883' in den int-Datentyp.
Ich müde:
select convert (int, UserAnswers1.members_exams_id)
from UserAnswers1
und
select cast(members_exams_id as integer) int_members_exams_id
from UserAnswers1
und
select cast (members_exams_id as int)
from UserAnswers1
Alle zu demselben Fehler führen
Fehler bei der Konvertierung beim konvertieren des nvarchar-Wert 'AAAR78509883' in den int-Datentyp.
- Nun, das ist nicht ein int. Erwarten Sie, dass es zu Streifen heraus, der führende alpha-Zeichen?
- Einfach schneiden Sie die ersten 4 und dann die cast-oder convert zu einer int. Ansonsten möchten Sie vielleicht, um zu erklären, warum Sie halten die Buchstaben und das, was Sie wollen mit Ihnen gemacht.
- Yep, können nicht-text-Zeichen in ein int-Feld, Sie haben zu denken, dass man.
- Ich weiß, dass Visual Basic verwendet, um Ihnen die Verwendung
val()
um einen nummerischen Wert, den diese Weise. Ich Wette, dass der Zugang zu und das ist, was Sie gewohnt sind. Val()
in Visual Basic können trim trailing nicht-Ziffern (val("1234sdf") = 1234
). Es wird nicht versucht zu entfernen, die führende nicht-Ziffern.- Du hast Recht. Ich habe nicht getan, BASIC, so lange ich konnte mich nicht daran erinnern, ob es vor oder zurück.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein problem könnte sein, systemischen, wo alle Daten hat einen führenden Buchstaben, die Sie brauchen, um zu entfernen (und hoffentlich die gleiche Anzahl von alpha-Zeichen)
In diesem Fall eine Teilzeichenfolge verwenden, um abzustreifen die alphas (dies nimmt dem Namen die Anzahl der Buchstaben in jedem Datensatz). Oder verwenden Sie einen varchar-oder nvarchar-Feld anstelle eines int. Wenn die Anzahl der führenden Zeichen variiert oder wenn Sie können, werden führende oder nachfolgende oder eine andere Kombination, es wird viel komplizierter zu beheben als wir kann wohl beschreiben, auf dem Internet.
Die andere Möglichkeit ist, dass Sie einfach haben einige schlechte Daten. In diesem Fall identifizieren Sie die Datensätze, die nicht numerisch sind und Sie zu lösen, oder null, wird der Wert aus, wenn Sie nicht fixiert werden können. Dies passiert Häufig, wenn Sie gespeichert haben, die Daten in einen falschen Datentyp.
Klar das Sie versuchen zu konvertieren, Daten, alphanumerische, um eine int-und das kann nicht getan werden.
Blick auf Ihre Daten warum besteht Ihr auf Konvertierung in ein int, wenn er nicht ein int? Warum nicht einfach diese als einen nvarchar?