2014-09-19 1 views
2

쉼표로 구분 된 key_list에 나열된 key_id를 기반으로 key_results를 반환하는 방법은 무엇입니까? 당신의 문자열이 유효한 PostgreSQL의 배열 리터럴이기 때문에PSQL은 쉼표로 구분 된 결과를 결합으로 선택합니다.

SELECT key_list FROM some.place where key_number=1234; 
    key_list 
---------------- 
{32,35,58,63,89} 

SELECT key_id, key_result FROM some.otherplace; 
    key_id | key_result 
-------------------------- 
32 | frisbee 
33 | duckhunt 
34 | hairplugs 
35 | sparkplugs 

답변

1

, 당신은 integer[]에 캐스트 = ANY에 대한 입력으로 사용할 수 있습니다 :

SELECT o.key_id, o.key_result 
FROM some.otherplace o 
INNER JOIN some.place p ON (o.key_id = ANY (key_list::integer[])) 

정말하지만 ...이 나쁜 스키마 설계입니다 . 이유는 this post을 참조하십시오. 최소한 실제 어레이를 저장해야합니다.

쉼표로 구분 된 값을 처리 할 때 유용한 다른 도구는 string_to_array, unnestregexp_split_to_table입니다.

+0

이것은 문제의 절반 만 해결합니다. 쿼리를'join'과 함께 넣어야합니다. –

+0

@GordonLinoff 동의, 제대로 생각하기 전에 게시, -ENOCOFFEE –

관련 문제