ne 5. 7. 2026 v 17:38 odesílatel Sehrope Sarkuni <[email protected]>
napsal:

> On Sun, Jul 5, 2026 at 11:13 AM Sehrope Sarkuni <[email protected]>
> wrote:
> > On Sun, Jul 5, 2026 at 8:59 AM Pavel Stehule <[email protected]>
> wrote:
> > >
> > > I found inconsistency in casting the value "null" of jsonb type to
> scalar types.
> > >
> > > Is it expected behaviour?
> >
> > I'm not sure if this is expected, but the cast from json to int not
> > giving an error for null is a change from v17. That cast previously
> > failed.
>
> Thinking about this a bit more, it does make sense and I'd say its
> expected behavior.
>
> The cast from jsonb (or json) to text is not extracting the one value.
> It's representing the entirety of any json/jsonb and would allow round
> tripping back again. It's effectively JSON.stringify(...) of the
> value. Otherwise you would not be able to represent null vs "null".
>
> The cast to int is for a specific scalar value and only works when the
> value itself is a number. It does not allow for transforming JSON
> strings, just null and numbers:
>
> SELECT '"123"'::jsonb::int
> ERROR:  cannot cast jsonb string to type integer
>
> SELECT '123'::jsonb::int
>  int4
> ------
>   123
> (1 row)
>
> SELECT 'null'::jsonb::int IS NULL;
>  ?column?
> ----------
>  t
> (1 row)
>
> So I'd say it's correct because the null int is the proper value to
> match the null jsonb scalar.
>

Yes, it is possible to see some logic there

Thank you for the reply

Regards

Pavel

Reply via email to