Fehler beim konvertieren von Datentyp varchar

Ich habe derzeit eine Tabelle mit einer Spalte als varchar. Diese Spalte kann halten zahlen oder text. Bei bestimmten Abfragen, die ich behandeln Sie es wie ein bigint Spalte (ich mache einen join zwischen ihm und einer Spalte in eine andere Tabelle bigint)

Solange gab es nur zahlen in dieses Feld hatte keine Mühe, aber die minute, die noch eine Zeile text hatte und nicht zahlen in diesem Feld habe ich ein "Fehler beim konvertieren von Datentyp varchar zu bigint." - Fehler, auch wenn in der WHERE-Teil machte ich sicher, dass keines der Felder kam.

Um dieses Problem zu lösen, die ich erstellt eine Ansicht wie folgt:

SELECT     TOP (100) PERCENT ID, CAST(MyCol AS bigint) AS MyCol
FROM         MyTable
WHERE     (isnumeric(MyCol) = 1)

Aber auch wenn die Ansicht zeigt nur die Zeilen mit numerischen Werten und wirft Mycol zu bigint bekomme ich noch einen Fehler beim konvertieren von Datentyp varchar in bigint, wenn Sie die folgende Abfrage ausführen:

SELECT * FROM MyView where mycol=1

Wenn dabei die Abfragen gegen die Ansicht, es sollte nicht mehr wissen, was hinten Los ist! es sollten einfach zwei bigint-Felder! (siehe die beigefügten Bild, auch mssql management studio zeigt die view-Felder als bigint)

Ich persönlich denke, Sie reparieren das falsche problem. Etwas ist falsch mit Ihrem schema/Datenbank-design wenn Sie eine Spalte für zwei verschiedene Zwecke.
Ja, ich weiß, aber das ganze system ist zu weit Fortgeschritten, um große Veränderungen, die jetzt
Folgenden link hat einige details dazu: sql-server-eigen-Problem-Fehler-converting-varchar-Datentyp bigint

InformationsquelleAutor adinas | 2009-08-06

Schreibe einen Kommentar