mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-30 13:51:23 +02:00
f5e524d92b
Joey Adams, per gripe from Ramanujam. Review by myself and Tom Lane.
251 lines
4.0 KiB
Plaintext
251 lines
4.0 KiB
Plaintext
--
|
|
-- 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)
|
|
|