1. JSONB 연산자
: 불리언 타입으로 '?' 연산자를 사용해 가장 바깥 단의 JSONB에 해당하는 문자열의 '키 값'이 존재하는지 확인할 수 있다.
- SELECT '{"username":"sumin","content":"hello world"}'::jsonb ? 'username' AS result;- true
: 가장 바깥단의 JSONB에 배열 속 원소가 '키 값'으로 1개 이상 존재하는지 물어볼 때는 '?!' 연산자를 사용한다.
- SELECT '{"hello":0,"psql":1, "world":2}'::jsonb ?| array ['a','psql'] AS result;- true
: 가장 바깥단의 JSONB 배열 속의 원소가 "키 값"으로 모두 존재하는지 물어볼 때는 '?&'연산자를 사용한다.
- SELECT '{"hello":0,"psql":1,"world":2}'::jsonb ?& array['psql','world'] AS result; -true
: '||' 연산자를 사용하여 JSONB와 JSONB를 병합할 수 있다.
- SELECT '{"username":"minho"}'::jsonb || '{"contents":"hello"}':: jsonb AS result;-{"contents","hello","username","minho"}
:JSONB 속의 데이터를 삭제할 때는 '-' 연산자를 사용한다
- SELECT '{"a","0","b":"1","c","2"} :: jsonb - 'b' AS result;-{"a","0","c","2"}
:복수의 원소를 삭제하고 싶은 경우, '-' 연산자의 우항에 text[] 원소로 삭제하고 싶은 복수의 원소를 넣어주면 된다.
- SELECT '{"a":"0","b":"1","c":"2"} :: jsonb - ARRAY['b','c'] AS result; - {"a":"0"}
:JSONB 배열의 원소를 삭제하는 방법 역시 '-' 연산자를 사용한다.다만 우항에는 배열의 원소가 아닌 인덱스 번호가 들어간다.
- SELECT '["a","b","c"] :: jsonb - -1 AS result;-["a","b"]
: 배열과 마찬가지로 포함관계를 표현할 때는'@>','<@' 연산자를 사용한다.
2. JSON 생성함수
:JSON 오브젝트 생성함수는 다음과 같은 형식으로 만들어준다.
- json_build_object("<키1>","<밸류1>","<키2>","<밸류2>",...)
- SELECT json_build_object('a',1,'b',2) AS result;-{"a":1,"b":2}
:JSONB 오브젝트 생성함수는 다음과 같은 형식으로 만들어준다.
- jsonb_build_object("<키1>","<밸류1>","<키2>","<밸류2>",...)
: JSON 배열을 생성하는 방법은 아래와 같다.
- json_build_array("<원소1>","<원소2>","<원소3>","<원소4>",...)
- SELECT json_build_array('a','1','b','2','c','3') AS result;-["a","1","b","2","c","3"]
3. JSON 처리함수
: json 배열의 원수의 갯수를 세는 경우 아래와 같은 함수를 사용한다.
- SELECT json_array_length('["a",1,"b",2,"c"]'::json) AS length; -5
: 키 값을 텍스트 데이터 타입으로, 밸류 값을 JSON 데이터 타입의 컬럼으로 정리하고 싶은 경우 json_each() 혹은 jsonb_each() 함수를 이용한다.
- SELECT * FROM json_each('{"sujin":"i like postgresql","Siyoun":"i like postgresql too"}');
: 만일 밸류 값도 출력받길 원한다면 json_each_text() 함수를 이용한다
: JSON 배열 속 원소를 컬럼으로 불러오는 경우 'json_array_elements()' 함수를 이용한다.
- SELECT * FROM json_array_elements('[1,"a",{"b":"c"},["d",2,3]]');- 1 "a" {"b":"c"} ["d",2,3]
: json_array_elements()로 불러온 원소들의 데이터 타입을 텍스트로 변경해서 불러오고 싶은 경우,
json_array_elements_text() 함수를 이용한다
'도서 > 모두를 위한 postgreSQL' 카테고리의 다른 글
Day10. 쿼리에 사용되는 연산자와 함수4 (0) | 2023.08.05 |
---|---|
Day9. 쿼리에 사용되는 연산자와 함수3 (0) | 2023.06.27 |
Day7. 쿼리에 사용되는 연산자와 함수 (0) | 2023.06.24 |
DAY6. Alter Table (0) | 2023.06.22 |
DYA5. 데이터의 무결성 (1) | 2023.06.21 |