2017-12-30 6 views
0

검색하려는 JSON 배열 데이터가있는 테이블이 있습니다.json 값을 선택하십시오 Postgresql

CREATE TABLE data (id SERIAL, json JSON); 

INSERT INTO data (id, json) 
    VALUES (1, '[{"login_name":"kiemthu"},{"login_name":"abc.vh"}]'); 

나는 아래 문자열

;#abc.vn;#phattrien;#cds.gg;# 

에서 JSON 컬럼의 값이이 테이블의 모든 행을 선택하려면 '#의 abc.vn을, #phattrien #의 cds.gg #'와 같은 그럼 당신은 케 할 수

SELECT id, json_array_elements(json) AS items FROM data 

: JSON 열 + '%'

답변

0

첫째, 당신은 여러 행에 JSON 배열 항목을 변환 할 수있는 '%'+ 값 스피이 임시 테이블이 원하는 기록의 ID를 (||는 문자열 연결을 의미) 찾기 : 당신이 ID를 알고 후

SELECT DISTINCT id FROM 
    (SELECT id, json_array_elements(json) AS items FROM data) tmp 
WHERE 
    ';#abc.vn;#phattrien;#cds.gg;#' LIKE '%' || (tmp.items->>'login_name') || '%' 

마지막으로, 당신이 원하는 것을 선택

SELECT * FROM data 
WHERE id IN ( 
    SELECT DISTINCT id FROM 
     (SELECT id, json_array_elements(json) AS items FROM data) tmp 
    WHERE 
     ';#abc.vn;#phattrien;#cds.gg;#' LIKE '%' || (tmp.items->>'login_name') || '%' 
) 
+0

많은 감사를, 정확히 무엇을의 I 필요 –

관련 문제