Postgres @> 任意值
Postgres @> Any Value
我有一个查询正在检查 jsonb genre
列并 returning 所有包含已传递类型编号的电影。因此:
SELECT id, name, year, description, "avgRating", "posterPath", genres, "trailerPath", seen
FROM movies
WHERE genres @>
ORDER BY year desc
因此,如果我将“18”作为 </code> 传递(<code>
来自节点模块),示例行将是:
在前端下拉菜单中还包含了一个可以传递的 'ALL' 选择。最初我只是让我的服务器检测到 'ALL' 值,而不是 运行 查询整个 table。不幸的是,当前的实现现在导致了查询组合过滤器的问题,所以我的问题是是否有一个值可以传递给 @>
运算符,可以 return 任何类型的电影,或者我是否需要更改我的查询结构?
--- 编辑有关将数组传递给查询的内容 ---
在 pgAdmin 4 中测试解决方案查询我通过了以下内容:
SELECT id, name, year, description, "avgRating", "posterPath", genres, "trailerPath", seen FROM movies WHERE genres @> [18] ORDER BY year desc
我收到以下错误:
ERROR: syntax error at or near "[" LINE 3: WHERE genres @> [18] ^ SQL state: 42601 Character: 122
箭头意在指向开头的数组括号指出错误的位置
@>
运算符是 contains operator。您应该传递数组 [18]
而不是字符串 18
。然后你可以传递一个空数组 []
如果没有设置特定的过滤器。
WHERE genres @> []
您可以像这样使用布尔逻辑:
WHERE = 'ALL' OR genres ?
请注意,这里使用 ?
而不是 @>
:后者在 jsonb 数组中搜索一个 jsonb 值,而前者搜索一个text value - 这似乎是你想要的。
我有一个查询正在检查 jsonb genre
列并 returning 所有包含已传递类型编号的电影。因此:
SELECT id, name, year, description, "avgRating", "posterPath", genres, "trailerPath", seen
FROM movies
WHERE genres @>
ORDER BY year desc
因此,如果我将“18”作为 </code> 传递(<code>
来自节点模块),示例行将是:
在前端下拉菜单中还包含了一个可以传递的 'ALL' 选择。最初我只是让我的服务器检测到 'ALL' 值,而不是 运行 查询整个 table。不幸的是,当前的实现现在导致了查询组合过滤器的问题,所以我的问题是是否有一个值可以传递给 @>
运算符,可以 return 任何类型的电影,或者我是否需要更改我的查询结构?
--- 编辑有关将数组传递给查询的内容 ---
在 pgAdmin 4 中测试解决方案查询我通过了以下内容:
SELECT id, name, year, description, "avgRating", "posterPath", genres, "trailerPath", seen FROM movies WHERE genres @> [18] ORDER BY year desc
我收到以下错误:
ERROR: syntax error at or near "[" LINE 3: WHERE genres @> [18] ^ SQL state: 42601 Character: 122
箭头意在指向开头的数组括号指出错误的位置
@>
运算符是 contains operator。您应该传递数组 [18]
而不是字符串 18
。然后你可以传递一个空数组 []
如果没有设置特定的过滤器。
WHERE genres @> []
您可以像这样使用布尔逻辑:
WHERE = 'ALL' OR genres ?
请注意,这里使用 ?
而不是 @>
:后者在 jsonb 数组中搜索一个 jsonb 值,而前者搜索一个text value - 这似乎是你想要的。