database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 9760 게시물 읽기
No. 9760
json 쿼리 질문입니다.
작성자
nmccm
작성일
2017-02-09 13:59
조회수
7,313

 postgresql 9.3 사용자입니다.

테이블이 아래의 그림처럼 되어 있습니다. 303이 들어 있는것을 검색하려면 어찌해야할까요

 

이 글에 대한 댓글이 총 2건 있습니다.

 9.4 이상이라면, 그냥 jsonb 형으로 바꾸고, @> 연산자로 비교하면 아주 직관적으로 이 문제를 풀 수 있는데, 

select * from t where (gitfs->0)::jsonb @> to_jsonb(303)

 

9.3에서 이문제를 풀려면, json_array_elements() 함수로 로우로 만들고, 그것을 비교해야 합니다. 

select t.* from  t, json_array_elemnts(t.gifts->0) as a where a.value::text::int = 303

 

이런 형태가 될 것 같네요.

 

9.3 에서는 이 작업 시 저 json 자료가 비정형으로 자료량이 많은 경우 성능을 크게 떨어뜨립니다.  최신 버전으로 옮기고, jsonb 자료형을 사용하고, 그 자료에 인덱스를 만들어 조회하는 것이 합리적일 것입니다.

 

김상기(ioseph)님이 2017-02-09 16:03에 작성한 댓글입니다.

 답변 감사합니다.

nmccm님이 2017-02-13 19:04에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
9765데이터베이스가 가끔씩 내려갑니다. pg_log [1]
김소영
2017-02-17
8517
9764WAL 튜닝 [1]
Dean
2017-02-15
8216
9763postgresql pgpool 이중화? [1]
pg입문자
2017-02-14
10213
9760json 쿼리 질문입니다. [2]
nmccm
2017-02-09
7313
9759http://postgresql.kr/ 가장 아래에 있는 줄 [1]
전상도
2017-01-28
7182
9758함수에서 RETURNS record 로 만들시... [3]
이기자
2017-01-25
7680
9757pg_repack install 관련 [3]
김은경
2017-01-16
8872
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.054초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다