小编Gol*_*den的帖子

在 PostgreSQL 中查询 JSONB

我有一个表,persons它包含两列,一个id和一个基于 JSONB 的data列(这个表只是为了演示目的而制作的,以使用 PostgreSQL 的 JSON 支持)。

现在,假设它包含两条记录:

1, { name: 'John', age: 30 }
2, { name: 'Jane', age: 20 }
Run Code Online (Sandbox Code Playgroud)

现在,假设我想得到每个 25 岁以上的人的名字。我尝试过的是:

select data->'name' as name from persons where data->'age' > 25
Run Code Online (Sandbox Code Playgroud)

不幸的是,这会导致错误。我可以通过使用->>代替来解决它->,但是比较不再按预期工作,因为不是比较数字,而是比较它们作为字符串的表示:

select data->'name' as name from persons where data->>'age' > '25'
Run Code Online (Sandbox Code Playgroud)

然后我发现我实际上可以通过使用->和强制转换来解决这个问题int

select data->'name' as name from persons where cast(data->'age' as int) > 25
Run Code Online (Sandbox Code Playgroud)

这有效,但我必须知道实际类型并不是那么好(ageJSON 文档中的类型是number无论如何,那么为什么 PostgreSQL …

postgresql cast json operator postgresql-9.5

23
推荐指数
1
解决办法
3万
查看次数

如何设置 SELECT 语句的隔离级别?

使用 PostgreSQL 9.5 我想确保当我运行一个SELECT语句时我得到一致的结果,即如果表在SELECT运行时被修改,我想获得SELECT启动时有效的状态。

基本上,它就像:拍摄一张表的快照,并且在拍摄快照时不允许更新表,然后交付快照,同时再次允许更新。

如果我正确理解隔离级别,REPEATABLE READ这就是我要找的,不是吗?

现在我的问题是:如何SELECT使用REPEATABLE READ隔离级别运行?或者我错过了什么,我的方法是错误的?我将如何解决这个问题?

postgresql select isolation-level snapshot-isolation postgresql-9.5

3
推荐指数
1
解决办法
1407
查看次数