-- and least(to_number(b.fromhn,''99999999''),to_number(b.tohn,''99999999''))
CREATE OR REPLACE FUNCTION least_hn(fromhn varchar, tohn varchar)
RETURNS integer AS
-$$ SELECT least(to_number( CASE WHEN trim($1) ~ '^[0-9.]+$' THEN $1 ELSE '0' END,'99999999.9'),to_number(CASE WHEN trim($2) ~ '^[0-9.]+$' THEN $2 ELSE '0' END,'99999999.9') )::integer; $$
+$$ SELECT least(to_number( CASE WHEN trim($1) ~ '^[0-9]+$' THEN $1 ELSE '0' END,'9999999'),to_number(CASE WHEN trim($2) ~ '^[0-9.]+$' THEN $2 ELSE '0' END,'9999999') )::integer; $$
LANGUAGE sql IMMUTABLE
COST 5;
-- and thu useable in an index or cacheable for multiple calls
CREATE OR REPLACE FUNCTION greatest_hn(fromhn varchar, tohn varchar)
RETURNS integer AS
-$$ SELECT greatest(to_number( CASE WHEN trim($1) ~ '^[0-9.]+$' THEN $1 ELSE '0' END,'99999999.9'),to_number(CASE WHEN trim($2) ~ '^[0-9]+$' THEN $2 ELSE '0' END,'99999999.9') )::integer; $$
+$$ SELECT greatest(to_number( CASE WHEN trim($1) ~ '^[0-9]+$' THEN $1 ELSE '0' END,'99999999'),to_number(CASE WHEN trim($2) ~ '^[0-9]+$' THEN $2 ELSE '0' END,'99999999') )::integer; $$
LANGUAGE sql IMMUTABLE
COST 5;
AND indexdef LIKE '%' || c.column_name || '%')
WHERE i.tablename IS NULL
ORDER BY c.table_schema, c.table_name), E';\r');
-
-
$$
LANGUAGE sql VOLATILE;
\ No newline at end of file