如何使用“ IN”和JSON中的多个值连接?

时间:2019-01-14 13:14:16

标签: json postgresql coalesce

我正在根据json“ cars”中接收的值用汽车数据过滤我的表格。如果json不包含某些属性,则跳过此参数以进行过滤。如果品牌是“ Ferrari”,颜色是“红色”,年份是“ 2019”,我想查看所有在2019年生产的红色法拉利。如果只是品牌是“ Ferrari”,并且我的json中缺少颜色或年份属性,我想看所有红色的法拉利。

我使用串联创建了代码,但是它仅适用于单个参数值。我无法弄清楚如何使其同时适用于红色和黑色法拉利或适用于2017年,2018年和2019年生产的所有汽车。如何从json提取多个值?我将感谢所有帮助。

CREATE FUNCTION mycar (cars json) 
  RETURNS TABLE (brand varchar, colour varchar, year int4, owner varchar)
  AS $$
  DECLARE
  BEGIN
  RETURN QUERY
   SELECT brand, colour, year, owner 
   FROM car_table
   WHERE table_brand=coalesce((cars::json->>'brand'),table_brand)
   and table_year=coalesce((cars::json->>'year')::int,table_year)
   and table_colour=coalesce((cars::json->>'colour'),table_colour);
 RETURN;
END;
$$ LANGUAGE plpgsql;

0 个答案:

没有答案