क्यों कास्टिंग JSONb अशक्त करने के लिए एक प्रकार विफल रहता है, यह एक विशिष्टता है, बग?

0

सवाल

के रूप में टिप्पणी में इस सवाल का जवाब,

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

परिणाम में "त्रुटि: नहीं डाली jsonb अशक्त पूर्णांक टाइप करने के लिए"... ठीक है, यह है "PostgreSQL" जिस तरह से है, लेकिन क्यों नहीं इसे बेहतर बनाने? बेहतर की तुलना में जोड़ें CASE खंड, यह कर रहा है "प्राकृतिक" बात यह है कि एक JSON-शून्य मान के लिए एक SQL टाइप नल मान. तो, यह है नहीं एक कार्यान्वयन की समस्या है, लेकिन यह लगता है एक विनिर्देश बग में PostregSQL: यह है?

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

सबसे अच्छा जवाब

2

कारण यह है कि SQL शून्य से काफी अलग है 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ý
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में