-- -- MONEY -- CREATE TABLE money_data (m money); INSERT INTO money_data VALUES ('123'); SELECT * FROM money_data; m --------- $123.00 (1 row) SELECT m + '123' FROM money_data; ?column? ---------- $246.00 (1 row) SELECT m + '123.45' FROM money_data; ?column? ---------- $246.45 (1 row) SELECT m - '123.45' FROM money_data; ?column? ---------- -$0.45 (1 row) SELECT m * 2 FROM money_data; ?column? ---------- $246.00 (1 row) SELECT m / 2 FROM money_data; ?column? ---------- $61.50 (1 row) -- All true SELECT m = '$123.00' FROM money_data; ?column? ---------- t (1 row) SELECT m != '$124.00' FROM money_data; ?column? ---------- t (1 row) SELECT m <= '$123.00' FROM money_data; ?column? ---------- t (1 row) SELECT m >= '$123.00' FROM money_data; ?column? ---------- t (1 row) SELECT m < '$124.00' FROM money_data; ?column? ---------- t (1 row) SELECT m > '$122.00' FROM money_data; ?column? ---------- t (1 row) -- All false SELECT m = '$123.01' FROM money_data; ?column? ---------- f (1 row) SELECT m != '$123.00' FROM money_data; ?column? ---------- f (1 row) SELECT m <= '$122.99' FROM money_data; ?column? ---------- f (1 row) SELECT m >= '$123.01' FROM money_data; ?column? ---------- f (1 row) SELECT m > '$124.00' FROM money_data; ?column? ---------- f (1 row) SELECT m < '$122.00' FROM money_data; ?column? ---------- f (1 row) SELECT cashlarger(m, '$124.00') FROM money_data; cashlarger ------------ $124.00 (1 row) SELECT cashsmaller(m, '$124.00') FROM money_data; cashsmaller ------------- $123.00 (1 row) SELECT cash_words(m) FROM money_data; cash_words ------------------------------------------------- One hundred twenty three dollars and zero cents (1 row) SELECT cash_words(m + '1.23') FROM money_data; cash_words -------------------------------------------------------- One hundred twenty four dollars and twenty three cents (1 row) DELETE FROM money_data; INSERT INTO money_data VALUES ('$123.45'); SELECT * FROM money_data; m --------- $123.45 (1 row) DELETE FROM money_data; INSERT INTO money_data VALUES ('$123.451'); SELECT * FROM money_data; m --------- $123.45 (1 row) DELETE FROM money_data; INSERT INTO money_data VALUES ('$123.454'); SELECT * FROM money_data; m --------- $123.45 (1 row) DELETE FROM money_data; INSERT INTO money_data VALUES ('$123.455'); SELECT * FROM money_data; m --------- $123.46 (1 row) DELETE FROM money_data; INSERT INTO money_data VALUES ('$123.456'); SELECT * FROM money_data; m --------- $123.46 (1 row) DELETE FROM money_data; INSERT INTO money_data VALUES ('$123.459'); SELECT * FROM money_data; m --------- $123.46 (1 row) -- Cast int4/int8 to money SELECT 1234567890::money; money ------------------- $1,234,567,890.00 (1 row) SELECT 12345678901234567::money; money ---------------------------- $12,345,678,901,234,567.00 (1 row) SELECT 123456789012345678::money; ERROR: bigint out of range SELECT 9223372036854775807::money; ERROR: bigint out of range SELECT (-12345)::money; money ------------- -$12,345.00 (1 row) SELECT (-1234567890)::money; money -------------------- -$1,234,567,890.00 (1 row) SELECT (-12345678901234567)::money; money ----------------------------- -$12,345,678,901,234,567.00 (1 row) SELECT (-123456789012345678)::money; ERROR: bigint out of range SELECT (-9223372036854775808)::money; ERROR: bigint out of range SELECT 1234567890::int4::money; money ------------------- $1,234,567,890.00 (1 row) SELECT 12345678901234567::int8::money; money ---------------------------- $12,345,678,901,234,567.00 (1 row) SELECT (-1234567890)::int4::money; money -------------------- -$1,234,567,890.00 (1 row) SELECT (-12345678901234567)::int8::money; money ----------------------------- -$12,345,678,901,234,567.00 (1 row)