Decimal values in SQL for dividing results

william picture william · Jan 29, 2011 · Viewed 206.6k times · Source

In SQL, I have col1 and col2. Both are integers.

I want to do like:

select col1/col2 from tbl1

I get the result 1 where col1=3 and col2=2

The result I want is 1.1

I put round(col1/col2,2). The result is still 1.

I put decimal(col1/col2,2). The decimal is not built in function.

How can I do exactly to get 1.1?

Answer

Andriy M picture Andriy M · Jan 29, 2011

Just another approach:

SELECT col1 * 1.0 / col2 FROM tbl1

Multiplying by 1.0 turns an integer into a float numeric(13,1) and so works like a typecast, but most probably it is slower than that.

A slightly shorter variation suggested by Aleksandr Fedorenko in a comment:

SELECT col1 * 1. / col2 FROM tbl1

The effect would be basically the same. The only difference is that the multiplication result in this case would be numeric(12,0).

Principal advantage: less wordy than other approaches.