Preciso implementar um tipo de dados que deve preservar os últimos zeros nas casas decimais no SQL Server 2008 R2. Exemplo dos dados são
1.002
1.210
0.00100
0.1401
Meus clientes obtêm medições de laboratório como essas e o número de pontos decimais informa que tipo de instrumentação, métodos etc. o laboratório usou. Eles precisam armazenar os dados como estão (não 1,21 para 1,210). Por enquanto, tenho um tipo de dados personalizado que implementa o tipo varchar como um tipo base, mas os desenvolvedores não gostam disso, pois a conversão para usar operadores matemáticos envolve alguma sobrecarga. Existe alguma solução de tipo numérico para lidar com esse tipo de problema?
Eu armazenaria isso como dois INT/BIGINT diferentes, um para cada lado do ponto decimal. Para facilitar a consulta, você também pode adicionar uma coluna computada que processa os dados como um varchar. Em outras palavras:
Opcionalmente, adicione mais colunas computadas para armazenar como float ou outros formatos que você pode precisar calcular.
Acredito que a melhor resposta seja a resposta de Martin. Eu usaria 2 colunas: um numeric(x,y) e um smallint para preservar a escala original.
Tem as seguintes vantagens em comparação com a solução int.int ou varchar: