这是我在postgresql中的视图,带有json列(labtestgroup和price)
CREATE OR REPLACE VIEW public.orders_with_prices
AS SELECT o.id,
replace(''::text || o.labtestgroup, '"'::text, ''::text) AS labtestgroup,
o.price,
FROM ( SELECT orders.id,
json_array_elements(orders."labTestGroups") AS labtestgroup,
json_array_elements(orders.prices) AS price,
FROM orders) o;
字符串
labtestgroups和prices是类似这样的json数组[“12”,“213”]
在我的表中,记录是分开的,但我有一个空数组[ ]的记录,这些记录不会出现在我的表中。
实际视图=
| ID|实验组|价格|
| --|--|--|
| 1 | 234 | 23 |
| 1 | 245 | 25 |
| 4 | 525 | 12 |
我需要显示空记录,值可以是[]、0或null
| ID| Labtestgroup|价格|
| --|--|--|
| 1 | 234 | 23 |
| 1 | 245 | 25 |
| 2 |[客户端]|[客户端]|
| 3 |[客户端]|[客户端]|
| 4 | 525 | 12 |
1条答案
按热度按时间wr98u20j1#
如果输入JSON数组为空或JSON字段为NULL,Postgres中的json_array_elements函数将不会生成行,这就是为什么您只能看到带有json数据的订单。为了避免这种情况,请使用左侧连接到json_array_elements的输出
字符串
然后,如果json数据为null,则使用coalesce输出
[]
。输出0或NULL可能更容易,因为这样列会更一致(并且您可能希望将其中一个或两个转换为数字)。