我在postgres中有一个表如下:
| 产品ID|价格|f_结构|
| --|--|--|
| 1 |十三点四|[{“s1”:{“low”:0,“high”:15,“count”:5},“s2”:{“low”:15,“high”:20,“count”:10}}]|
| 2 |15.6| [{“s1”:{“low”:0,“high”:15,“count”:5},“s2”:{“low”:15,“high”:20,“count”:10}}]|
| 3 |二十四点五|[{“s1”:{“低”:0,“高”:15,“计数”:5},“s2”:{“低”:15,“高”:20,“计数”:10},{“s1”:{“低”:20,“高”:25,“计数”:7}}|
我想根据价格从f_struc中获取每个product_id的相关“count”值。如果没有找到,则返回n/a
在这个例子中,对于product_id 1,价格为13.5,我需要得到“count”5的值,因为它在low:0和high:15之间
对于product_id 2,我需要获取“count”10的值,因为它在low:15和high:20之间
可以有N层。
1条答案
按热度按时间inb24sb21#
使用
jsonb_path_query_first()
并将price
作为变量传递到JSONPath表达式中:demo at db<>fiddle字符串
| 产品ID|描述|价格|计数|
| --|--|--|--|
| 1 |基本示例|十三点四| 5 |
| 2 |嵌套畸形|15.6| 10 |
| 3 |层边界是字符串|二十四点五| 7 |
| 4 |没有与价格匹配的级别|34.2| * 空 *|
| 5 |层重叠| 42 | 1 |