Search code examples
db2db2-luw

DB2 show json_object as null if empty


I want that the output of the select for the column FORMATTED_JSON is null if it is empty instead of empty object, means

IDENTIFIER | FORMATTED_JSON
1          | null 

This is the query:

SELECT IDENTIFIER, JSON_OBJECT('NAME' VALUE name, 'SIZE' VALUE SIZE FORMAT JSON ABSENT ON NULL) FORMATTED_JSON
FROM ABC

Solution

  • SELECT 
      IDENTIFIER
    , NULLIF (JSON_OBJECT ('NAME' VALUE name, 'SIZE' VALUE SIZE ABSENT ON NULL), '{}') FORMATTED_JSON
    FROM 
    (
      VALUES 
        (1, 'N1', 'S1') 
      , (2, 'N2', NULL)
      , (3, NULL, NULL)
    ) ABC (IDENTIFIER, NAME, SIZE)
    
    IDENTIFIER FORMATTED_JSON
    1 {"NAME":"N1","SIZE":"S1"}
    2 {"NAME":"N2"}
    3