sql >> Database >  >> RDS >> PostgreSQL

kan geen elementen extraheren uit een scalair

U kunt een van deze proberen (in plaats van het jsonb_array_elements(t.addresses) address ):

jsonb_array_elements(
    case jsonb_typeof(addresses) 
        when 'array' then addresses 
        else '[]' end
    ) as address
-- or
jsonb_array_elements(
    case jsonb_typeof(addresses) 
        when 'array' then addresses 
        else '[{"PostCode": null}]' end
    ) as address

De eerste verbergt rijen met een onjuist json-formaat van de kolom, de tweede geeft null voor hen.

Het probleem komt echter voort uit het feit dat een of meer waarden in de kolom geen json-array zijn. Je kunt het eenvoudig oplossen met het commando:

update contact
set addresses = '[null]' 
-- or
-- set addresses = '[{"PostCode": null}]'
where jsonb_typeof(addresses) <> 'array' or addresses = '[]';

Na deze correctie heb je case niet meer nodig in jsonb_array_elements() .




  1. Ik vind geen fout. Deze code doet het goed. Werk mijn gegevens perfect bij. Maar er wordt 1 fout weergegeven

  2. Python:best practice en veiligste manier om verbinding te maken met MySQL en query's uit te voeren

  3. update gegevens in de div

  4. Hoe erachter te komen of de gebruiker aanwezig is in Sqlite Database met Android?