我有一个专栏 carInfo
带类型 jsonb
在我的postgresql数据库的一个表中。示例行如下所示:
{
"name":"John",
"age":25,
"car":{
"brand":"KIA",
"year":2015
}
}
我知道在postgresql中,您可以通过以下方式进行查询:
select * from car where carInfo -> 'name' = 'John'
但是我想使这个查询成为动态的(通过使用postgresql函数或者别的什么),这样我就可以从我的java应用程序中查询它了。我想重用同一个查询,即使我想更深一层,例如
select * from car where carInfo -> 'car' -> 'brand' = 'KIA'
你知道我怎样才能做到吗?
1条答案
按热度按时间xu3bshqb1#
可以使用contains运算符
@>
```select *
from car
where car_info @> '{"name": "John"}';
select *
from car
where car_info @> '{"car": {"Brand": "KIA"}}';
String sql = "select * from car where car_info @> cast(? as jsonb)";
PreparedStatement pstmt = connection.prepareStatement(sql);
pstmt.setString(1, "{"car": {"Brand": "KIA"}}";
ResultSet rs = pstmt.executeQuery();