T-SQL: Removendo Pontos Decimais do Tipo de Dado Money
Ao trabalhar com dados financeiros no SQL Server, especialmente usando a linguagem T-SQL, você pode se ver precisando manipular números de uma maneira que os despoje de seus pontos decimais. Para aqueles que utilizam o tipo de dado Money no SQL Server 2005, você pode se perguntar se há uma abordagem melhor do que converter o número em uma string e, em seguida, remover o ponto decimal por meio de manipulação de string. Vamos explorar um método eficiente para alcançar isso.
A Abordagem Comum
Muitos desenvolvedores SQL tratam a remoção de pontos decimais de tipos Money convertendo o número em um varchar primeiro e utilizando a função REPLACE
. Por exemplo:
SELECT REPLACE(1.23, '.', ''), REPLACE(19.99, '.', '')
Este código substitui o ponto decimal, resultando nos inteiros desejados 123 e 1999. No entanto, este método pode parecer desajeitado e não é ideal em termos de desempenho ou legibilidade.
Uma Solução Mais Eficiente
Uma solução mais elegante permite que você obtenha o mesmo resultado sem conversões desnecessárias. Em vez de converter em uma string, você pode multiplicar o valor Money por 100 e, em seguida, convertê-lo em um INT. Este método é direto e aproveita os recursos do T-SQL de forma eficaz. Veja como você pode fazê-lo:
Implementação Passo a Passo
- Multiplique o Valor Money por 100: Isso desloca o ponto decimal duas casas para a direita. Por exemplo,
1.23
se torna123
e19.99
se torna1999
. - Converta para INT: A conversão para INT descarta quaisquer pontos decimais, deixando você com um número inteiro limpo.
Exemplo de Implementação
Aqui está um exemplo prático para ilustrar a solução em ação:
SELECT CAST(1.23 * 100 AS INT) AS Amount1,
CAST(19.99 * 100 AS INT) AS Amount2
Este código retornará:
Amount1
: 123Amount2
: 1999
Por Que Este Método é Preferível
- Desempenho: Multiplicar e converter é geralmente mais rápido do que a manipulação de strings, especialmente com conjuntos de dados maiores.
- Simplicidade: O código é mais fácil de ler e manter, tornando-o direto para qualquer um que revise ou utilize os scripts SQL.
- Integridade dos Dados: Ao permanecer dentro dos tipos numéricos e evitar conversão para strings, você minimiza o risco de introduzir erros ou comportamentos inesperados devido a formatação incorreta.
Conclusão
Usando T-SQL no SQL Server 2005, a remoção de pontos decimais dos tipos de dados Money pode ser feita de maneira eficiente multiplicando o valor por 100 e convertendo-o em um inteiro. Esta abordagem é mais simples, mais rápida e garante a integridade dos dados. Na próxima vez que você precisar manipular valores Money em suas consultas, considere este método para uma solução mais limpa e eficaz.