Hah! It worked this time, didn't it? That's how you can force the desired result in PostgreSQL.
There is one problem with this method: What if both numbers are given as columns, like hp / level
? We need to use another trick: explicitly converting one column to another data type. This procedure is called casting, and it uses the structure shown below:
SELECT (hp::numeric) / level AS result
FROM character;
The structure column::type
changes the column to the specified type. You can do this also by using the CAST()
function:
SELECT CAST(hp AS numeric) / level AS result
FROM character;
This function takes the name of the column to convert, the keyword AS
, and the new data type.
In PostgreSQL, there are three kinds of number data types:
- Integer data types with names like
smallint
, integer
, bigint
, etc.
- Exact number data types (i.e., decimal types) with names like
numeric
, decimal
, money
.
- Inexact number data types with names like
real
, double precision
.
When dividing two integers in this course, we always cast the numerator to a numeric
data type. In a real world application, you may need a different precision and a different casting (e.g., casting both numbers to real
).