json/jsonb 타입의 컬럼의 json 컨텐츠에서 array 값을 가지는 특정 property를 행으로 가져올 때 from 절에 json_array_elements 혹은 jsonb_array_elements 함수를 사용합니다.
select * from json_array_elements(('{ "Cities": [ "Seoul", "Busan", "Daegu" ]}'::json) -> 'Cities')
하지만 만일 Cities가 null 일 경우 해당 쿼리를 실행하면 scalar type 값에 json_array_elements를 호출 할 수 없다는 오류를 뿜어냅니다.
select * from json_array_elements(('{ "Cities": null }'::json) -> 'Cities')
이 때, null 값을 제거해주는 json_strip_nulls 함수를 사용하면 해당 오류가 발생하는 것을 피할 수 있습니다.
select * from json_array_elements(json_strip_nulls('{ "Cities": null }'::json) -> 'Cities')
해당 쿼리의 결과값은 Cities 배열의 값이 null 이므로 당연히 반환되는 행이 없습니다.