Sql Postgres jsonb列从字符串匹配通配符的数组中选择
我希望将postgres jsonb列与数组一起使用,并能够对其进行过滤,因此我有一个带有列的模式:Sql Postgres jsonb列从字符串匹配通配符的数组中选择,sql,arrays,postgresql,jsonb,Sql,Arrays,Postgresql,Jsonb,我希望将postgres jsonb列与数组一起使用,并能够对其进行过滤,因此我有一个带有列的模式: CREATE TABLE testtable ( id varchar(32) NOT NULL, refs jsonb NULL, ) 该列包含Json格式的数据: { "refs": ["one-1-0", "two-3-2", "two-3-4" ] } 我希望能够返回包含以(例如)“two-3-”开头的数组元素的所有行 我已经尝试了几种方法,但无法让
CREATE TABLE testtable
(
id varchar(32) NOT NULL,
refs jsonb NULL,
)
该列包含Json格式的数据:
{ "refs": ["one-1-0", "two-3-2", "two-3-4" ] }
我希望能够返回包含以(例如)“two-3-”开头的数组元素的所有行
我已经尝试了几种方法,但无法让它按照我的意愿工作(最接近的方法是将数组部分作为文本,并将其作为字符串进行搜索-但这很糟糕)
我还想在此列中添加一个合适的索引以支持此查询
任何建议都会被愉快地接受!
谢谢
LIKE
比较器和%
通配符按数组元素(value
)筛选所有记录DISTINCT
LIKE
比较器和%
通配符按数组元素(value
)筛选所有记录DISTINCT
可能重复的可能重复的可能重复的非常感谢,如果可能的话,我会把这张票投100次我是否正确地认为以下索引是支持此查询的正确索引:在testtable上创建索引idx1((refs->'refs'))我相信您至少可以尝试一下。非常感谢您,如果可能的话,我将对此进行100次投票:)我是否正确地认为以下索引是支持此查询的正确索引:在testtable上创建索引idx1((refs->'refs'))我相信您至少可以尝试一下。
SELECT DISTINCT -- 3
id, refs
FROM
testtable,
jsonb_array_elements_text(refs -> 'refs') -- 1
WHERE
value LIKE 'two_3%' -- 2