2016-07-17 7 views
3

PostgreSQL(9.5)データベースにテーブルContentがあり、カラムにはtitleが含まれています。 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) 

私の質問は、私はtitleExample pageが含まれているcontentを選択することができる方法、ありますか?

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

このクエリは残念ながら機能しません。

あなたは、where句

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列のすべての値の配列を返します。

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

は、それはあなたのお役に立てば幸いです。

+0

'title'は' hstore'列です。この配列にはanyを使って値をマッチングすることができます。あなたは 'hstore'に' LIKE'を使うことはできません –

+0

うん、うまくいきません。 – Robin

+0

varcharデータ型にキャストできますか? –

関連する問題