SQL Server 2005 Konvertieren Sie VARCHAR in INT, aber den Standardwert für den ungültigen Typ

7

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?

    
PP. 10.03.2010, 18:21
quelle

2 Antworten

20

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.

    
marc_s 10.03.2010, 18:24
quelle
1

Sie werden zu Überlaufproblemen kommen, wenn Sie varchar like 88888888888888888888888

haben %Vor%     
Craig Curran 29.05.2012 10:43
quelle

Tags und Links