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

  1. Multiplique o Valor Money por 100: Isso desloca o ponto decimal duas casas para a direita. Por exemplo, 1.23 se torna 123 e 19.99 se torna 1999.
  2. 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: 123
  • Amount2: 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.