如何参数化搜索jsonb数组包含的内容?

时间:2019-05-03 02:42:01

标签: postgresql postgresql-9.6

我有colA,它是带有数组的jsonb列。以下是一些示例行:

["postgresql", "mysql", "elasticsearch"]
["python", "perl"]

我正在尝试搜索数组是否具有“ postgresql”或“ mysql”:

SELECT 'colA @> ANY (ARRAY ['["postgresql"]', '["mysql"]']::jsonb[])' FROM mytable

返回第一行。现在,由于用户将传递数据,因此我需要参数化查询:

SELECT 'colA @> ANY (ARRAY ['[$1]', '[$2]']::jsonb[])' FROM mytable

但是我得到了

ERROR: syntax error at or near "["

1 个答案:

答案 0 :(得分:0)

您可以在review_text = ['review_1_text', 'review_2_text ', 'review_3_text '] review_label = ['positive','negative','negative'] 子句中用cross joinjsonb_array_elements_text()的表,该表允许您根据获得的相应值来过滤from子句中的记录。

where

DEMO