[SQL] 어떻게 새로운 PostgreSQL의 JSON 데이터 형식의 내부 필드를 사용하여 쿼리 할 수 있습니까?
SQL어떻게 새로운 PostgreSQL의 JSON 데이터 형식의 내부 필드를 사용하여 쿼리 할 수 있습니까?
나는 PostgreSQL을 9.2의 새로운 JSON 기능에 대한 몇 가지 문서 및 / 또는 예제를 찾고 있어요.
특히, JSON 기록의 시리즈를 제공 :
[
{name: "Toby", occupation: "Software Engineer"},
{name: "Zaphod", occupation: "Galactic President"}
]
어떻게 이름으로 기록을 찾을 수있는 SQL을 작성합니다?
바닐라 SQL에서 :
SELECT * from json_data WHERE "name" = "Toby"
공식 dev에 매뉴얼은 매우 희박한 :
나는 PostgreSQL을 9.2로 현재 무엇이 가능한지 자세히 설명하는 요점을 함께 넣었습니다. 일부 사용자 지정 기능을 사용하면, 같은 일을 할 수 있습니다 :
SELECT id, json_string(data,'name') FROM things
WHERE json_string(data,'name') LIKE 'G%';
지금은 자신의 프로젝트에 내 JSON 기능을 이동했습니다 :
PostgreSQL을 - 완전히 끝내 JSON 문서 저장소로 PostgreSQL의 및 PL / V8을 변환하는 함수의 집합
해결법
-
==============================
1.나는를 pgsql-해커 목록에 앤드류 던스를 인용 :
나는를 pgsql-해커 목록에 앤드류 던스를 인용 :
당신의 문제를 해결해야 PLV8의 예제 구현을 제공에서 그를 방해하지 않습니다.
혜택은 새로운 함수와 연산자의 무기는 "JSON 처리"를 추가 할 수 있습니다.
포스트 그레스 9.3에서 원래의 질문에 대한 답변 :
SELECT * FROM json_array_elements( '[{"name": "Toby", "occupation": "Software Engineer"}, {"name": "Zaphod", "occupation": "Galactic President"} ]' ) AS elem WHERE elem->>'name' = 'Toby';
고급 예 :
큰 테이블의 경우는 증가 성능을 표현 인덱스를 추가 할 수 있습니다 :
추가한다 jsonb 두 유형의 또 더 많은 기능 ( "진"의 B는 기본 값 포스트 그레스 형식으로 저장된다). 식 인덱스 외에 위에서 언급에서는 jsonb 또한 진 이들 중 가장 강력한되는, 진, BTREE 해시 인덱스를 지원한다.
설명서는 제안으로까지 간다 :
굵게 강조 광산.
GIN 인덱스 일반적인 개선에서 성능 혜택을 제공합니다.
jsonb 함수와 연산자 완료. 장소 및 표시 jsonb 조작하기 위해 더 많은 기능을 추가합니다.
-
==============================
2.> 운영자 - 포스트 그레스 9.3+로, 단지를 사용합니다. 예를 들어,
> 운영자 - 포스트 그레스 9.3+로, 단지를 사용합니다. 예를 들어,
데이터를 선택 -> '이미지'-> '미리보기'-> 'URL'인스 타 그램 FROM 엄지 손가락 AS;
몇 가지 좋은 예와 튜토리얼 http://clarkdave.net/2013/06/what-can-you-do-with-postgresql-and-json/를 참조하십시오.
-
==============================
3.포스트 그레스 9.3 사용 -> 개체 액세스합니다. 4 예
포스트 그레스 9.3 사용 -> 개체 액세스합니다. 4 예
seed.rb
se = SmartElement.new se.data = { params: [ { type: 1, code: 1, value: 2012, description: 'year of producction' }, { type: 1, code: 2, value: 30, description: 'length' } ] } se.save
레일 C
SELECT data->'params'->0 as data FROM smart_elements;
보고
data ---------------------------------------------------------------------- {"type":1,"code":1,"value":2012,"description":"year of producction"} (1 row)
당신은 중첩을 계속할 수
SELECT data->'params'->0->'type' as data FROM smart_elements;
반환
data ------ 1 (1 row)
from https://stackoverflow.com/questions/10560394/how-do-i-query-using-fields-inside-the-new-postgresql-json-datatype by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL 서버 프로세스 큐 레이스 조건 (0) | 2020.03.13 |
---|---|
[SQL] SQL에서 월 이름 기능에 월 번호 변환 (0) | 2020.03.13 |
[SQL] 조건 내에서 JOIN 또는 WHERE (0) | 2020.03.13 |
[SQL] MySQL의 오류 : 키 길이없는 키 사양 (0) | 2020.03.13 |
[SQL] MAX와 GROUP BY (DATE) [중복] (0) | 2020.03.13 |