Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Arredondamento de um valor em uma coluna varchar no MS SQL Server 2012?


Exemplo selecione para verificar os valores propostos:
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

Atualizar declaração..

Inclui manipulação de valor nulo (ou seja, deixa-os intocados)

Inclui manipulação de valores científicos com notação E em valores de string de origem. por exemplo. 6.6699999999999995E-2

Inclui a remoção do zero à direita no lado direito do número

A função Formatar é usada.

A função STR com um float deixa zeros à direita, então eu não usei isso.

A função Convert com um float para uma string determina seu próprio número de casas decimais, então eu queria evitar isso também!
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

Observe que o 0 no especificador de formato tem um significado específico.

Por favor, veja:

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