supponendo i seguenti dati:SQL IsNumeric Restituisce True ma Rapporti SQL 'Conversione non riuscita'
Column1 (data type: varchar(50))
--------
11.6
-1
1,000
10"
Non-Numeric String
Ho una domanda, che sta tirando i dati da questa colonna e vorrebbe per determinare se il valore è un numero, quindi restituirlo come tale nella mia domanda. Così sto facendo il seguente
SELECT CASE WHEN IsNumeric(Replace(Column1,'"','')) = 1 Then Replace(Column1,'"','') Else 0 End As NumericValue
SQL sta riportando indietro: Conversione non riuscita durante la conversione del valore varchar '11 .6' al tipo di dati int.
Perché? Ho anche cercato di forzare giocare questa:
SELECT CASE WHEN IsNumeric(Replace(Column1,'"','')) = 1 Then cast(Replace(Column1,'"','') as float) Else 0 End As NumericValue
ed ho ottenuto: Errore che converte il tipo di dati varchar a stare a galla.
'IsNumeric()' accetta doppi/float/singoli ecc. Inoltre, non controlla gli overflow ('99999999999999999999999999999' è numerico, non converte in molti tipi di numeri). La best practice per il tipo di situazione è che non si memorizzano i dati numerici nei campi stringa nel primo posto_. –