Eu tenho um banco de dados que tem um valor, um tamanho de compartilhamento em bytes e um nome de compartilhamento. O que é bastante preciso, mas não é útil para o meu usuário final. Portanto, transformei o valor para GB. O que funcionou muito bem usando uma divisão simples.
vamos supor que meu banco de dados consiste em duas colunas. Sharename e Sharesize.
Sharename | Sharesize
Share 1 |71685107549
Now I run this:
SELECT TOP (1000)
[Sharename]
,[ShareSize]
,(ShareSize / 1e+9) SharesizeGB
FROM [mydb].[dbo].[myshares]
A saída é:
ShareSize SharesizeGB
71685107549 71,685107549
Agora preciso substituir o "," por um "ponto" e arredondar o resultado para ter apenas dois dígitos após o ponto.
Isso é possível usando apenas uma instrução select?
Para o meu exemplo não é necessário dividir por 1024.
A consulta retorna um tipo de dados float, que é uma estrutura binária que não possui vírgula ou separador decimal de ponto. É o aplicativo de renderização que converte o valor em um formato de string para fins de exibição, que pode honrar as configurações regionais do cliente se programado para isso.
Embora você possa alterar o T-SQL para retornar uma string formatada como no exemplo abaixo, esteja ciente de que a classificação do cliente usará string em vez de regras numéricas. Observe que este exemplo especifica explicitamente culture
en_US
, que usa um separador decimal de ponto, para substituir a configuração de idioma da sessão atual. Também adicionadoORDER BY
para resultados determinísticos com aTOP
cláusula.