왜 주 대화는 두서없 NULL 유형에 실패한 사양 버그?

0

질문

으로 주석에 이 답변,

SELECT (j->'i')::int FROM  (SELECT '{"i":null}'::jsonb) t(j); -- fail

결과에서 "오류가할 수 없습니다 던지기 대화는 두서없이 null 이 유형의 정수"...확인,이것은"PostgreSQL 방법으로"하지만 왜 그것은 더 나은? 보다 더 추가 CASE 절을 하는 것은""자연적인 것,주물 JSON-NULL 값에 SQL 입력 null 값. 그래서,그것은 구현에 문제가 있지만,그것은 보인다 사양 버그 에서 PostregSQL: 그것은?

casting jsonb postgresql
2021-11-16 19:53:05
1

최고의 응답

2

그 이유는 SQL NULL 른 JSON null.

하려면 이렇게하려면:

SELECT nullif((j->'i'), 'null')::int FROM  (SELECT '{"i":null}'::jsonb) t(j);
 nullif 
--------
   NULL
(1 row)

 SELECT pg_typeof(nullif((j->'i'), 'null')::int) FROM  (SELECT '{"i":null}'::jsonb) t(j);
 pg_typeof 
-----------
 integer


SELECT nullif((j->'i'), 'null')::int FROM  (SELECT '{"i": 1}'::jsonb) t(j);
 nullif 
--------
      1
(1 row)

사용 nullif 를 변환하 JSON null SQL NULL.

2021-11-17 05:29:10

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................