Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Rundung eines Werts in einer varchar-Spalte in MS SQL Server 2012?

Beispielauswahl zum Prüfen der vorgeschlagenen Werte:

select 
      case when ISNULL([Call Length], '') = '' 
      then '' 
      else 
 FORMAT(Cast ( CONVERT(numeric(16,4), CAST([Call Length] AS FLOAT)) as float),'########0.####')   
      end as    val123
    from Clinical.AAAJFJunk

Anweisung aktualisieren ..

Beinhaltet die Behandlung von Nullwerten (d. h. lässt sie unberührt)

Umfasst die Handhabung wissenschaftlicher Werte mit E-Notation in Quellstringwerten. z.B. 6.6699999999999995E-2

Beinhaltet das Entfernen der nachgestellten Null auf der rechten Seite der Zahl

Die Format-Funktion wird verwendet.

Die STR-Funktion mit Float hinterlässt nachgestellte Nullen, also habe ich das nicht verwendet.

Die Konvertierungsfunktion mit einem Float in einen String bestimmt ihre eigene Anzahl an Dezimalstellen, also wollte ich das auch vermeiden!

UPDATE Clinical.AAAJFJunk
SET [Call Length] =
      case when ISNULL([Call Length], '') = '' 
      then '' else 
            FORMAT(Cast ( CONVERT(numeric(16,4), CAST([Call Length] AS FLOAT)) as float),'########0.####')   end

Bitte beachten Sie, dass die 0 im Formatbezeichner eine bestimmte Bedeutung hat.

Siehe bitte:

https://docs.microsoft .com/en-us/dotnet/standard/base-types/custom-numeric-format-strings