4 CREATE TABLE money_data (m money);
5 INSERT INTO money_data VALUES ('123');
6 SELECT * FROM money_data;
12 SELECT m + '123' FROM money_data;
18 SELECT m + '123.45' FROM money_data;
24 SELECT m - '123.45' FROM money_data;
30 SELECT m / '2'::money FROM money_data;
36 SELECT m * 2 FROM money_data;
42 SELECT 2 * m FROM money_data;
48 SELECT m / 2 FROM money_data;
54 SELECT m * 2::int2 FROM money_data;
60 SELECT 2::int2 * m FROM money_data;
66 SELECT m / 2::int2 FROM money_data;
72 SELECT m * 2::int8 FROM money_data;
78 SELECT 2::int8 * m FROM money_data;
84 SELECT m / 2::int8 FROM money_data;
90 SELECT m * 2::float8 FROM money_data;
96 SELECT 2::float8 * m FROM money_data;
102 SELECT m / 2::float8 FROM money_data;
108 SELECT m * 2::float4 FROM money_data;
114 SELECT 2::float4 * m FROM money_data;
120 SELECT m / 2::float4 FROM money_data;
127 SELECT m = '$123.00' FROM money_data;
133 SELECT m != '$124.00' FROM money_data;
139 SELECT m <= '$123.00' FROM money_data;
145 SELECT m >= '$123.00' FROM money_data;
151 SELECT m < '$124.00' FROM money_data;
157 SELECT m > '$122.00' FROM money_data;
164 SELECT m = '$123.01' FROM money_data;
170 SELECT m != '$123.00' FROM money_data;
176 SELECT m <= '$122.99' FROM money_data;
182 SELECT m >= '$123.01' FROM money_data;
188 SELECT m > '$124.00' FROM money_data;
194 SELECT m < '$122.00' FROM money_data;
200 SELECT cashlarger(m, '$124.00') FROM money_data;
206 SELECT cashsmaller(m, '$124.00') FROM money_data;
212 SELECT cash_words(m) FROM money_data;
214 -------------------------------------------------
215 One hundred twenty three dollars and zero cents
218 SELECT cash_words(m + '1.23') FROM money_data;
220 --------------------------------------------------------
221 One hundred twenty four dollars and twenty three cents
224 DELETE FROM money_data;
225 INSERT INTO money_data VALUES ('$123.45');
226 SELECT * FROM money_data;
232 DELETE FROM money_data;
233 INSERT INTO money_data VALUES ('$123.451');
234 SELECT * FROM money_data;
240 DELETE FROM money_data;
241 INSERT INTO money_data VALUES ('$123.454');
242 SELECT * FROM money_data;
248 DELETE FROM money_data;
249 INSERT INTO money_data VALUES ('$123.455');
250 SELECT * FROM money_data;
256 DELETE FROM money_data;
257 INSERT INTO money_data VALUES ('$123.456');
258 SELECT * FROM money_data;
264 DELETE FROM money_data;
265 INSERT INTO money_data VALUES ('$123.459');
266 SELECT * FROM money_data;
273 SELECT '1234567890'::money;
279 SELECT '12345678901234567'::money;
281 ----------------------------
282 $12,345,678,901,234,567.00
285 SELECT '123456789012345678'::money;
286 ERROR: value "123456789012345678" is out of range for type money
287 LINE 1: SELECT '123456789012345678'::money;
289 SELECT '9223372036854775807'::money;
290 ERROR: value "9223372036854775807" is out of range for type money
291 LINE 1: SELECT '9223372036854775807'::money;
293 SELECT '-12345'::money;
299 SELECT '-1234567890'::money;
305 SELECT '-12345678901234567'::money;
307 -----------------------------
308 -$12,345,678,901,234,567.00
311 SELECT '-123456789012345678'::money;
312 ERROR: value "-123456789012345678" is out of range for type money
313 LINE 1: SELECT '-123456789012345678'::money;
315 SELECT '-9223372036854775808'::money;
316 ERROR: value "-9223372036854775808" is out of range for type money
317 LINE 1: SELECT '-9223372036854775808'::money;
319 -- special characters
326 SELECT '($123,456.78)'::money;
332 -- documented minimums and maximums
333 SELECT '-92233720368547758.08'::money;
335 -----------------------------
336 -$92,233,720,368,547,758.08
339 SELECT '92233720368547758.07'::money;
341 ----------------------------
342 $92,233,720,368,547,758.07
345 SELECT '-92233720368547758.09'::money;
346 ERROR: value "-92233720368547758.09" is out of range for type money
347 LINE 1: SELECT '-92233720368547758.09'::money;
349 SELECT '92233720368547758.08'::money;
350 ERROR: value "92233720368547758.08" is out of range for type money
351 LINE 1: SELECT '92233720368547758.08'::money;
354 SELECT '-92233720368547758.085'::money;
355 ERROR: value "-92233720368547758.085" is out of range for type money
356 LINE 1: SELECT '-92233720368547758.085'::money;
358 SELECT '92233720368547758.075'::money;
359 ERROR: value "92233720368547758.075" is out of range for type money
360 LINE 1: SELECT '92233720368547758.075'::money;
362 -- Cast int4/int8/numeric to money
363 SELECT 1234567890::money;
369 SELECT 12345678901234567::money;
371 ----------------------------
372 $12,345,678,901,234,567.00
375 SELECT (-12345)::money;
381 SELECT (-1234567890)::money;
387 SELECT (-12345678901234567)::money;
389 -----------------------------
390 -$12,345,678,901,234,567.00
393 SELECT 1234567890::int4::money;
399 SELECT 12345678901234567::int8::money;
401 ----------------------------
402 $12,345,678,901,234,567.00
405 SELECT 12345678901234567::numeric::money;
407 ----------------------------
408 $12,345,678,901,234,567.00
411 SELECT (-1234567890)::int4::money;
417 SELECT (-12345678901234567)::int8::money;
419 -----------------------------
420 -$12,345,678,901,234,567.00
423 SELECT (-12345678901234567)::numeric::money;
425 -----------------------------
426 -$12,345,678,901,234,567.00
430 SELECT '12345678901234567'::money::numeric;
432 ----------------------
436 SELECT '-12345678901234567'::money::numeric;
438 -----------------------
439 -12345678901234567.00