2016-07-17 8 views
3

나는 열을 포함하는 PostgreSQL (9.5) 데이터베이스에 Content 테이블을 가지고 있습니다. title 열은 hstore입니다. title이 다른 언어로 번역 되었기 때문에 hstore입니다. 예를 들어 :hstore 값에서 행을 선택하는 방법은 무엇입니까?

내 질문은
example=# SELECT * FROM contents; 
id |     title     |     content      |   created_at   |   updated_at   
----+---------------------------------------------+------------------------------------------------+----------------------------+---------------------------- 
    1 | "de"=>"Beispielseite", "en"=>"Example page" | "de"=>"Beispielinhalt", "en"=>"Example conten" | 2016-07-17 09:20:23.159248 | 2016-07-17 09:20:23.159248 
    (1 row) 

, 내가 어떻게 content하는 titleExample page를 포함 선택할 수 있습니다?

SELECT * FROM contents WHERE title = 'Example page'; 

이 쿼리는 불행히도 작동하지 않습니다. 절

SELECT * FROM contents WHERE title like '%Example page%'; 

가 당신을 도움이되기를 바랍니다 경우 당신은에서와 같이 사용해야

example=# SELECT * FROM contents WHERE title = 'Example page'; 
ERROR: Syntax error near 'p' at position 8 
LINE 1: SELECT * FROM contents WHERE title = 'Example page'; 

답변

4

avals() 함수는 hstore 열에있는 모든 값의 배열을 반환합니다. 그런 다음 그 배열에 대해 any을 사용하여 값을 일치시킬 수 있습니다.

select * 
from contents 
where 'Example page' = any(avals(title)) 
0

.

+0

'title'은'hstore' 열입니다. 'hstore'에'LIKE'을 사용할 수 없습니다 –

+0

그래, 작동하지 않습니다. – Robin

+0

varchar 데이터 유형으로 캐스팅 할 수 있습니까? –

관련 문제