Loading

Errore "Error converting data type varchar to float” durante la creazione di un'estrazione dell'origine dati di SQL Server

Data pubblicazione: Aug 24, 2022
Descrizione
Durante un tentativo di estrazione dell'origine dati di un SQLServer, potrebbe verificarsi uno dei seguenti errori:
  • An error occurred while communicating with data source <Data Source Name> (Si è verificato un errore durante la comunicazione con l'origine dati <Nome origine dati>).
    SQL Server database error 0x80040E07: Error converting data type varchar to float (Errore SQL Server 0x80040E07: Errore durante la conversione del tipo di dati varchar in float).
  • [Microsoft][SQL Server Native Client 11.0][SQL Server] Error converting data type varchar to float ([Microsoft][Client nativo SQL Server 11.0][SQL Server] Errore nella conversione del tipo di dati varchar in float)
    Unable to create extract (Impossibile creare l'estrazione)

Cause

Questo errore si verifica perché SQL Server non è in grado di convertire i valori delle stringhe in valori numerici se la stringa contiene quanto segue:
  • Simboli di valuta $, £, o ¥. Ad esempio, "123 $".
  • Virgole. Ad esempio, "100.000".
  • Un singolo carattere di: simbolo valuta, virgola(,), punto decimale (.), segno più (+), segno meno (-). Ad esempio, "$".
  • Più di un punto. Ad esempio, "1.1.0".
  • Segni più (+) o meno (-) posizionati in modo errato. Ad esempio, "2-".
Risoluzione
Usa una delle seguenti opzioni, a seconda dei dati a disposizione:
  • Crea un campo calcolato per rimuovere i simboli di valuta e le virgole dai tuoi dati prima di convertirli. 
  • Accertati che i caratteri come il segno più (+), il segno meno (-) e il punto decimale (.) siano posizionati in un formato numerico valido. Ad esempio, i segni più e meno possono essere utilizzati solo a sinistra di un numero (ad esempio, -2). 
  • Se i valori dei dati delle stringhe sono di tipo valuta, puoi utilizzare rawSQL per eseguire il cast della stringa nel tipo di dati MONEY di SQL Server prima di eseguire il cast in un numero. Ad esempio:
RAWSQL_REAL("CASE WHEN ISNUMERIC(%1) = 1 THEN CAST(CAST(%1 AS MONEY) AS FLOAT) END", [<Your_String_Field>])
Numero articolo Knowledge

001498347

 
Caricamento
Salesforce Help | Article