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)