pgsql中 {a:1,b:2} || {a:3,c:4}得值
时间: 2024-11-04 09:10:28 浏览: 8
osm2pgsql:OpenStreetMap数据到PostgreSQL转换器
在 PostgreSQL 中,如果你尝试直接使用 `||` 运算符来合并两个键值对形式的 `json` 对象,比如 `{a:1,b:2}` 和 `{a:3,c:4}`,结果会是一个字符串,因为 `json` 类型并不支持结构化的合并。它会按照字符串的形式拼接,不会尝试合并数据:
```sql
SELECT '{a:1,b:2}' || '{a:3,c:4}';
```
上述查询的结果会类似于:`"{a:1,b:2}{a:3,c:4}"`,并不是一个合并了 key-value 对的新 JSON 对象。
如果你想合并这两个 JSON 对象并保留其键值对结构,你应该使用 `jsonb` 类型,并利用 PostgreSQL 的 JSON 函数,如 `jsonb_build_object` 来构建新的 JSONB 对象:
```sql
SELECT jsonb_build_object('a', jsonb_first_value('{a:3,c:4}', 'a'), 'b', '{b:2}', 'c', jsonb_get('{a:3,c:4}', 'c'));
```
这将返回一个包含所有键值对的新 JSONB 对象:`{a:3, b:2, c:4}`。
阅读全文