Dies ist zu lang für einen Kommentar.
Das Problem ist offensichtlich - Sie haben eine Zeichenfolge, und Sie behandeln es als eine Zahl. Es gibt drei mögliche Gründe.
Die erste ist eine explizite Konvertierung, bei der die Zeichenfolge in eine Zahl konvertiert wird. Dies sollte leicht zu finden sein. Sie können die explizite Konvertierung mit try_convert()
in SQL Server 2012+ ersetzen.
Die zweite ist nicht viel schwieriger. Der Operator +
wird sowohl für die Addition als auch für die Kettenverkettung verwendet. Es verursacht oft diese Art von Problem. Alle numerischen Argumente müssen in Zeichenfolgen konvertiert werden. Oder ändern Sie den gesamten Code, der die Verkettung ausführt, um die CONCAT()
-Funktion zu verwenden - die Argumente werden automatisch in Zeichenfolgen konvertiert.
Die dritte ist implizite Konvertierung für numerische Operationen. Wenn Sie andere Operationen (oder Funktionsaufrufe) haben, die numerische Werte erfordern, konvertiert SQL Server die Werte implizit in Zahlen. Dies kann sehr schwer zu finden sein. Versuchen Sie, Code zu schreiben, der nicht auf impliziten Konvertierungen angewiesen ist.
Hinweis: Der Versuch, ungültige Werte mit einer WHERE
-Klausel (auch in einer Unterabfrage oder CTE) herauszufiltern, funktioniert nicht. Wenn Sie
wie Problem Sieht aus Prozedur mit sQL. Schauen Sie sich die Abfrage an und suchen Sie nach den Spalten, die 'varchar' sind und eine Operation mit' number' durchführen. Es kann sein, wo Bedingung auch oder mit Zeichenfolge und Nummer verbinden Sie suchen müssen. –