选择包含正则表达式匹配的 Jsonb 数组

J P*_*lar 1 regex postgresql jsonb

给定一个数据结构如下:

{"single":"someText", "many":["text1", text2"]}
Run Code Online (Sandbox Code Playgroud)

我可以查询单个正则表达式

WHERE JsonBColumn ->> 'single' ~ '^some.*'
Run Code Online (Sandbox Code Playgroud)

我可以查询数组上的包含匹配

WHERE JsonBColumn -> 'many' ? 'text2'
Run Code Online (Sandbox Code Playgroud)

我想做的是用 JArray 上的正则表达式进行包含匹配

WHERE JsonBColumn -> 'many' {Something} '.*2$'
Run Code Online (Sandbox Code Playgroud)

小智 6

我发现还可以将整个 JSONB 数组转换为纯文本字符串,然后简单地对其执行正则表达式。但副作用是搜索类似的东西

xt 1", "文字

最终会匹配。

这种方法不太干净,因为它不会单独搜索每个元素,但它通过视觉上更简单的语句完成工作。

    WHERE JsonBColumn ->>'many'  ~ 'text2'
Run Code Online (Sandbox Code Playgroud)