Jag är formodligen extra mycket hjärndöd idag. Men jag får inte ihop det här. Jag har ett tal som jag får från en textbox. Talet kan se ut något liknande detta "496,200000" Du måste använda rätt nationella inställningar när du konverterar, decimalkomma är europiskt, och inte standard i många applikationer. Det lämpligaste är nog att i C# på något sätt använda dig av ett cast där du på något sätt kan ange att det är enligt lokala inställningar. I SQL ska du alltid använda . som decimaltecken. En fullösning är att ersätta , med . som Niklas föreslog. En mer korrekt lösning är att använda sig av parametrar till frågan så ser providern till att det alltid blir rätt. På detta sätt slipper man oroa sig för sql-injection också.Peta in sträng i en decimal i SQLServer
När jag sedan vil peta in det i en decimal i databasen stöter jag på patrull. Hur jag än vrider och vänder på det - castar i C#-koden eller i SQL-koden - så blir det FEL.
Castar jag textsträngen till en decimal i C# så lipar databasen över att det är fel efter ",". Castar jag i SQL så lipar den om "Incorrect syntax near the keyword 'AS'."
SQL: cast(" + strPrice + " AS decimal)
C#: decimal.Parse(strPrice)
Boven i dramat verkar hela tiden vata kommatecknet...
VAD ÄR DET JAG INTE SER?Sv: Peta in sträng i en decimal i SQLServer
Om du vet att datorn alltid kommer ha utländska inställningar kan du ju göra en replace på "," till ".".Sv: Peta in sträng i en decimal i SQLServer
Johan