如何从任何 hstore 值中 select 一行?

How to select a row from any hstore values?

我在 PostgreSQL (9.5) 数据库中有一个 table Content,其中包含列 titletitle 列是 hstore。它是 hstore,因为 title 被翻译成不同的语言。例如:

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)

我的问题是,我如何 select title 包含 Example pagecontent

SELECT * FROM contents WHERE title = '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';

你应该在 where 子句中使用 like

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

希望对你有帮助。

avals() 函数 returns hstore 列中所有值的数组。然后,您可以使用 any 与该数组匹配您的值:

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