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.