在PostgreSQL中按值动态选择或过滤JSON字段

时间:2019-11-25 13:41:08

标签: json postgresql

表中有JSON列,我可以选择嵌套属性,例如...

SELECT '{"monday": 123}'::json->>'monday'; --> returns 123

...但是如果我要动态选择属性,则无法使用

SELECT '{"monday": 123}'::json->>to_char(now() AT TIME ZONE 'Pacific/Yap', 'day'); --> returns null

有没有可能实现?

谢谢!

1 个答案:

答案 0 :(得分:1)

您需要将FM前缀添加到day关键字。 to_char(..., 'day')具有固定大小,这意味着monday之后有尾随空格。 FM前缀将其删除:

Click: demo:db<>fiddle

SELECT '{"monday": 123}'::json ->> to_char(now() AT TIME ZONE 'Pacific/Yap', 'FMday')