我有一个表books
,行如下:
genres字段是一个enum数组,它包含图书类型,以下是它的可能值:['adventure', 'horror', 'romance']
| 标题|流派|
| --|--|
| 僵局|【恐怖】|
| 阳光山|{浪漫,冒险}|
| 流亡王子|【冒险】|
我试探着:
SELECT * FROM books
WHERE genres = ARRAY['Adventure']::book_genres_enum[];
字符串
但那只会退回“流亡王子”的书。
如何对genres
数组中包含 *“Adventure”的所有行进行公式化查询?
1条答案
按热度按时间osh3o9ms1#
简单的查询是
= ANY
:字符串
这适用于任何类型的数组。在这方面,
enum
类型没有什么特别之处。请参阅:显式强制转换是可选的。当将“Adventure”作为非类型化字符串文本传递时,数据类型是从上下文派生的。(可能不适用于类型化值。)
索引
如果表很大,并且您在
books(genres)
上有一个GIN索引,请使用数组运算符。此查询等效:型
为什么?为什么?