I wanna cast my_field to DOUBLE PRECISION in select query. my_field return NULL or Text.
I try this:
SELECT
cast(my_table.my_field AS DOUBLE PRECISION) AS my_double_field
FROM mytablename my_table;
And this:
CASE
WHEN (my_table.my_field IS NULL)
THEN NULL
ELSE my_table.my_field AS DOUBLE PRECISION)
END AS my_double_field
I got error:
ERROR: invalid input syntax for type double precision: "null"
So I try with function:
CREATE FUNCTION casttodouble(VARCHAR) RETURNS DOUBLE PRECISION AS $$
DECLARE
text_colum text := $1;
BEGIN
RETURN cast(text_colum AS DOUBLE PRECISION);
END;
$$ LANGUAGE plpgsql;
SELECT
CASE
WHEN (my_table.my_field IS NOT NULL)
THEN casttodouble(my_table.my_field)
ELSE NULL
END AS my_double_field,
FROM mytablename my_table;
And got:
ERROR: invalid input syntax for type double precision: "null"
Where: SQL statement "SELECT cast(text_colum AS DOUBLE PRECISION)"
PL/pgSQL function casttodouble(character varying) line 5 at RETURN
EDIT:
This didn't fail:
SELECT
cast(NULL AS DOUBLE PRECISION) AS my_double_field
FROM mytablename my_table;
'null'in the column (which is different from theNULLvalue)? IE doesSELECT * FROM mytablename my_table WHERE my_field ILIKE 'null';return something?