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

4 maneiras de converter um número em uma porcentagem no SQL Server (T-SQL)


Aqui estão 4 maneiras de converter um número em um valor percentual no SQL Server.

Estritamente falando, não estamos realmente “convertendo” em uma porcentagem. Estamos formatando o número como uma porcentagem. Mas para fazer isso, precisamos converter o número de um tipo de dados numérico para uma string.

Aqui estão 4 maneiras de fazer isso.


Exemplo 1 – A função FORMAT()


A escolha mais óbvia para usar é o FORMAT() função. Isso permite exibir números e datas em um formato específico.

Aqui está um exemplo de uso desta função para exibir um número como uma porcentagem:
SELECT FORMAT(55, 'P') Result;

Resultado:
+------------+
| Result     |
|------------|
| 5,500.00 % |
+------------+

Observe que quatro zeros foram adicionados ao nosso valor (dois antes do ponto decimal e dois depois).

O seguinte seria necessário para fazer esses 55%:
SELECT FORMAT(.55, 'P') Result;

Resultado:
+----------+
| Result   |
|----------|
| 55.00 %  |
+----------+

Se o número for o valor percentual real que você deseja, você pode fazer isso:
SELECT FORMAT(55 * .01, 'P') Result;

Resultado:
+----------+
| Result   |
|----------|
| 55.00 %  |
+----------+

Você também pode remover a parte fracionária adicionando um zero ao especificador de formato:
SELECT FORMAT(.55, 'P0') Result;

Resultado:
+----------+
| Result   |
|----------|
| 55 %     |
+----------+

Se necessário, você também pode adicionar mais casas decimais:
SELECT FORMAT(.55123456, 'P7') Result;

Resultado:
+--------------+
| Result       |
|--------------|
| 55.1234560 % |
+--------------+

Exemplo 2 – A função CONVERT()


Você também pode usar o CONVERT() função para converter o número em uma string e, em seguida, adicione um sinal de porcentagem ao final.

Isso pode parecer um pouco desnecessário, dada a facilidade com que o exemplo anterior o tornou, no entanto, o FORMAT() A função foi introduzida apenas no SQL Server 2012. Portanto, é assim que você precisará fazer se usar uma versão anterior do SQL Server.
SELECT CONVERT(VARCHAR(4), 55) + ' %' Result;

Resultado:
+----------+
| Result   |
|----------|
| 55 %     |
+----------+

Claro, se o seu número for algo como .55 e você precisa que seja exibido como 55,00%, então você sempre pode multiplicá-lo por 100:
SELECT CONVERT(VARCHAR(6), 0.55 * 100) + ' %' Result;

Resultado:
+----------+
| Result   |
|----------|
| 55.00 %  |
+----------+

Neste caso eu também aumentei o tamanho do varchar tipo de dados para atender aos caracteres extras.

Além disso, você pode remover a parte fracionária usando o LEFT() função:
SELECT CONVERT(VARCHAR(6), LEFT(0.55 * 100, 2)) + ' %' Result;

Resultado:
+----------+
| Result   |
|----------|
| 55 %     |
+----------+

Embora você precise ter cuidado ao fazer isso, pois o valor real pode variar para mais ou para menos de 2. Nesse caso, você pode usar o TRIM() função para cortar zeros à esquerda e/ou pontos à direita:
SELECT CONVERT(VARCHAR(6), TRIM('0,.' FROM LEFT(0.55 * 100, 3))) + ' %' Result;

Resultado:
+----------+
| Result   |
|----------|
| 55 %     |
+----------+

No entanto, isso não é perfeito, e o FORMAT() A função obviamente fornece muito mais flexibilidade com um mínimo de código.

Exemplo 3 – A função CAST()


Alternativamente, podemos usar o CAST() função para fazer a mesma coisa que o exemplo anterior:
SELECT CAST(55 AS VARCHAR(4)) + ' %' Result;

Resultado:
+----------+
| Result   |
|----------|
| 55 %     |
+----------+

Observe que CAST() e CONVERT() usar sintaxes ligeiramente diferentes. No caso de CAST() o valor a ser convertido vem primeiro, enquanto é o contrário com CONVERT() .

Exemplo 4 – O CONCAT() Função


Você também pode usar o CONCAT() função para concatenar um número com o sinal de porcentagem:
SELECT CONCAT(55, ' %') Result;

Resultado:
+----------+
| Result   |
|----------|
| 55 %     |
+----------+

Esta função converte implicitamente todos os argumentos em tipos de string antes da concatenação.