Zakładając następujące dane:SQL IsNumeric Zwraca prawda ale Raporty SQL „konwersja Failed”
Column1 (data type: varchar(50))
--------
11.6
-1
1,000
10"
Non-Numeric String
Mam kwerendy, która ciągnie dane z tej kolumny i chciałbym, aby określić, czy wartość jest liczbą, następnie zwróć go jako taki w moim zapytaniu. Więc robię następujące
SELECT CASE WHEN IsNumeric(Replace(Column1,'"','')) = 1 Then Replace(Column1,'"','') Else 0 End As NumericValue
SQL melduje z powrotem: Konwersja nie powiodła się podczas konwersji .6' wartość varchar '11 do danych typu int.
Dlaczego? Próbowałem również odrzucić to:
SELECT CASE WHEN IsNumeric(Replace(Column1,'"','')) = 1 Then cast(Replace(Column1,'"','') as float) Else 0 End As NumericValue
I otrzymałem: Błąd podczas konwertowania danych typu varchar na float.
'IsNumeric()' zaakceptuje podwójne/zmiennoprzecinkowe/pojedyncze itd. Również nie sprawdza przepełnień ('99999999999999999999999999999' ma wartość liczbową, nie będzie konwertować na większość typów liczb). Najlepszą praktyką w tej sytuacji jest to, że nie przechowujesz danych liczbowych w polach ciągów w pierwszej kolejności. –