Ich habe eine varchar (100) -Spalte in einer Tabelle, die eine Mischung aus ganzen Zahlen (als Strings) und nicht ganzzahligen Strings enthält. ZB
%Vor%Wie kann ich einen Ausdruck z. Summiere alle Werte, die gültige ganze Zahlen sind? Wenn ich es versuchen sollte:
%Vor% Ich würde einen Conversion failed when converting the varchar value 'Pyramids' to data type int.
Fehler erhalten.
Gibt es einen Test, den ich in meinem Ausdruck verwenden kann, ähnlich wie die Funktion ISNULL()
, mit der ich einen Standardwert festlegen kann, wenn das Feld keine Zahl ist?
Versuchen Sie Folgendes:
%Vor% Der CASE sollte prüfen, ob dimension
numerisch ist - falls ja, gebe diesen Wert zurück. Wenn es nicht numerisch ist, gebe einen Standardwert zurück (hier: 0)
Wenn Sie das ziemlich häufig abfragen müssen, könnten Sie auch eine persistente, berechnete Spalte zu Ihrer Tabelle hinzufügen, die diese Berechnung einkapselt und den Wert speichert. Auf diese Weise berechnen Sie beim Summieren usw. nicht immer den Wert neu:
%Vor% Nun können Sie SELECT dimension, numericvalue FROM mytable
eingeben und beide Werte abrufen, ohne dass eine Berechnung ausgeführt werden muss.
Sie werden zu Überlaufproblemen kommen, wenn Sie varchar
like 88888888888888888888888
Tags und Links sql sql-server-2005