sql >> Base de Datos >  >> RDS >> Sqlserver

¿Redondeo de un valor en una columna varchar en MS SQL Server 2012?

Ejemplo de selección para comprobar los valores propuestos:

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

Actualizar declaración ..

Incluye el manejo de valor nulo (es decir, los deja intactos)

Incluye el manejo de valores científicos con notación E en valores de cadena de origen. p.ej. 6.6699999999999995E-2

Incluye la eliminación del cero final en el lado derecho del número

Se utiliza la función de formato.

La función STR con un flotante deja ceros al final, así que no usé eso.

La función Convertir con un flotante en una cadena determina su propio número de lugares decimales, ¡así que quería evitar eso también!

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

Tenga en cuenta que el 0 en el especificador de formato tiene un significado específico.

Consulte:

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