如何从任何 hstore 值中 select 一行?
How to select a row from any hstore values?
我在 PostgreSQL (9.5) 数据库中有一个 table Content
,其中包含列 title
。 title
列是 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 page
的 content
?
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))
我在 PostgreSQL (9.5) 数据库中有一个 table Content
,其中包含列 title
。 title
列是 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 page
的 content
?
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))