From: | Mark Simon <mark(at)manngo(dot)net> |
---|---|
To: | Wolfgang Walther <walther(at)technowledgy(dot)de>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Suggestion: optionally return default value instead of error on failed cast |
Date: | 2022-08-14 03:36:01 |
Message-ID: | 7bf4ea3e-b55b-306f-73d9-585c3229a92f@manngo.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
PostgreSQL is the only popular DBMS (define popular?) which doesn’t have
a friendly alternative. I asked about it on Stack
(https://dba.stackexchange.com/questions/203934/postgresql-alternative-to-sql-server-s-try-cast-function/311980#311980)
and ended up with the following:
DROP FUNCTION IF EXISTS cast_int; CREATE FUNCTION
cast_int(string varchar, planB int default null) RETURNS INT AS $$
BEGIN RETURN floor(cast(string as numeric));
EXCEPTION WHEN OTHERS THEN return planB; END $$
LANGUAGE plpgsql;
Obviously this is type-specific, but the point is that it’s not hard.
Best Regards,
Mark
On 12/12/2020 8:13 pm, Wolfgang Walther wrote:
> Hi,
>
> currently a failed cast throws an error. It would be useful to have a
> way to get a default value instead.
>
> T-SQL has try_cast [1]
> Oracle has CAST(... AS .. DEFAULT ... ON CONVERSION ERROR) [2]
>
> The DEFAULT ... ON CONVERSION ERROR syntax seems like it could be
> implemented in PostgreSQL. Even if only DEFAULT NULL was supported (at
> first) that would already help.
>
> The short syntax could be extended for the DEFAULT NULL case, too:
>
> SELECT '...'::type -- throws error
> SELECT '...':::type -- returns NULL
>
> I couldn't find any previous discussion on this, please advise in case
> I just missed it.
>
> Thoughts?
>
> Best
>
> Wolfgang
>
> [1]:
> https://docs.microsoft.com/en-us/sql/t-sql/functions/try-cast-transact-sql
> [2]:
> https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sqlrf/CAST.html
>
>
>
>
--
Mark Simon
Manngo Net Pty Ltd
mobile:0411 246 672
email:mark(at)manngo(dot)net <mailto:mark(at)comparity(dot)net>
web:http://www.manngo.net
From | Date | Subject | |
---|---|---|---|
Next Message | Kazutaka Onishi | 2022-08-14 03:59:15 | Re: Asynchronous execution support for Custom Scan |
Previous Message | vignesh C | 2022-08-14 02:55:01 | Tab completion for "ALTER TYPE typename SET" and rearranged "Alter TYPE typename RENAME" |