FIX: Fel Vid Konvertering Av Datatyp Mellan Char Till Float.

Under de senaste dagarna har några av våra läsare stött på ett fel när de konverterade en mängd char-data till en float-datatyp. Detta problem uppstår på grund av många orsaker. Nu ska vi diskutera dem.

Ta bort skadlig programvara, skydda dina filer och optimera prestanda med ett klick!

Samma orsak till det vanliga felmeddelandet i det här fallet är att du använder det faktiska kommatecken (,) även om det är att du helt enkelt decimalkomma och punkter är och dessutom grupperar siffror. Även om SQL Server tar hänsyn till punkten (.) för att vara ett bra giltigt decimaltecken. Använd inte ens nummergrupperingstecken när du vänder varchar för att driva.

Din idé anses vara att du specifikt letar efter gitarrsträngar som innehåller tecknet % och ändrar dem (implicit eller explicit) till ett fullständigt flyttal.

Men %-strängar gjorda av tecken är svåra att konvertera på marknaden till flyttal, även om företag fortfarande innehåller % i dessa resurser. Detta ger också ett felmeddelande:

Vad är dataval varchar?

Som namnet antyder innehåller varchar en ny mängd karaktärsdata. Ett segment, även känt som en variabel utomhus, är en typ av marknadsföringssvar i form av en egenskapssträng av obestämd längd. Den kommer förmodligen att innehålla siffror, vad som helst och minnesvärda karaktärer.

välj KONVERTERA(float,'12,5%')

Om du vill konvertera det bästa flyttaltalet måste du först ta bort ditt %-tecken, för exempel:

CONVERT(float,REPLACE(terms_code,'%',''))

Hur får jag Nvarchar att flyta i SQL?

Jag börjar konvertera NVARCHAR till float med Välj CAST (col1 som float) New_col1 början av [email protected] : . . .

kommer bara att ta bort allt. Jag vet inte om din individs kolumn terms_code har några andra kändisar som också kan utlösa en komplett resa.

Kan vi renovera varchar så att den flyter?

fel varchar kan inte växlas till float eller liknande.

Du bör vanligtvis vara medveten om att SQL Server säkert ofta aggressivt kan återuppbygga operationer och med största sannolikhet försöka göra den typ av konvertering som beskrivs ovan för alla många andra strängar i terms_code, även de där det inte ens är %< omfattar /code>. Om detta är anledningen till att uppnå din failureachi, måste du förhindra denna process aggressiv omorganisation. Förutsatt att inga aggregat är inblandade, undviker den faktiska CASE-satsen alltid de största problemen - se till att alla strängar som köpare inte vill hantera raderas med s WHEN föregående meningar när du försöker konvertera

  • Hem
  • SQL Server 2008
  • SQL Server '08 - Allmänt
  • Fel vid konvertering av dataförklaring från varchar till flyttal.

  • fel vid konvertering av informationstyp char till float

    Alla

    Jag kan komma på att det här ämnet har diskuterats många gånger i förväg och att jag använder alla möjliga lösningar utan att ha någon nytta av det, så jag är här.

    Jag har en mobiltelefonapplikation som lagrar sådana ökningar i en varchar(7) kolumn med namnet Using CC_Agent_State_Summary table:

    Kallas

    0,02 %

    16,2 %

    fel vid roterande datatyp char to float

    99,91%

    Inlämningen sparar och visar dessa attityder endast individuellt. Jag har även en rapportuppgift utanför applikationen. I den mån jag tillhandahåller SUM och gör ett genomsnitt av den här typen av värden över flera datamängder, skulle jag förmodligen fortsätta som vanligt med fel:

    Fel vid renovering av datametod varchar to float

    Jag klipper ut skatten, tog bort specifika "%" och kan fortfarande inte konvertera eller överföra dessa specifika värden. Eftersom jag har svårt att ändra strukturen på bakverket, har jag fastnat för vad jag borde göra, men jag har ingen eliminering över vad jag ska leverera resultatet på.

    Några idéer?

    Tack!

  • 1. Ladda ner och installera Reimage
  • 2. Starta programmet och välj den enhet du vill skanna
  • 3. Klicka på knappen Skanna för att starta skanningsprocessen

Okej, eftersom detta är ett SQL 2008-forum kan du svara som du inte har tillgång till om du behöver en try_cast. Detta för oss till den tredje anmärkningen: uppgradera! SQL 2008 är föråldrat.

Nu kan du svara att det inte är vi som bestämmer vad vi ska göra med uppdateringarna. Tja visa erfarenheterna av att inte kunna kontrollera denna fråga på SQL 2008 och därmed måste du exportera bevisen till fallet med SQL 2012 också senare. Det här problemet var inte ovanligt där vi bara behövde komma i konflikt med SQL 2008, och till och med reducerade briljant idag, när det faktiskt för närvarande finns en helt acceptabel lösning. Du kan rikta in dig på isnumeric men detta är nästan säkert inte en garanti eftersom isnumeric bör returnera 1 i ett värde som är konverterbart till pengar men inte kan överföras.

[font="Times New Roman"] Erland Sommarskog, SQL MVP, Gear www.sommarskog.se[/font]