You could declare the column as sql_variant and then store each value as the precise decimal type:create table #test(limit sql_variant)
insert #test values(cast(0.00020 as decimal(6,5)))
insert #test values(cast(0.05 as decimal(3,2)))
insert #test values(cast(5.00 as decimal(3,2)))
insert #test values(cast(0.00020 as decimal(6,5)))
insert #test values(cast(0.00010 as decimal(6,5)))
insert #test values(0.00010)
select *, SQL_VARIANT_PROPERTY(limit,'BaseType') Type,
SQL_VARIANT_PROPERTY(limit,'Precision') Precision, SQL_VARIANT_PROPERTY(limit,'Scale') Scale
from #test
You'd have to use an explicit CAST or CONVERT to ensure the digits are preserved (see SQL_VARIANT_PROPERTY on last value for example)