ทำไมถึงการคัดเลือกนักแสดง JSONb โพรโทคอล aimcomment ต้องเป็นประเภทล้มเหลวมันเป็น specification แมลง?

0

คำถาม

เป็น ยังอยู่ในนี้ตอบ,

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

ผลตรวจใน "เกิดข้อผิดพลาด:ไม่สามารถแสดง jsonb โพรโทคอล aimcomment ต้องประเภทจำนวนเต็ม"...โอเค,นี่คือ"PostgreSQL ทาง"แต่ ทำไมไม่ทำให้มันดีขึ้นเหรอ? ดีกว่าเพิ่ม CASE clauses มันคือมาทำอะไรที่"ธรรมชาติ"อย่างนั้นคือการคัดเลือกนักแสดงเป็น LANGUAGE-โพรโทคอล aimcomment ค่าที่เป็นภาษา sql งพิมพ์โพรโทคอล aimcomment ค่า. ดังนั้นมันไม่ใช่ implementation ปัญหาแต่มันดูเหมือนเป็น specification ดักฟัง ใน PostregSQL: มันคือ?

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

คำตอบที่ดีที่สุด

2

เหตุผลนั่นคือภาษา sql โพรโทคอล aimcomment ค่อนข้างแตกต่างจาก LANGUAGE 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 ต้องเปลี่ยน LANGUAGE null กับภาษา sql NULL.

2021-11-17 05:29:10

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

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

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่