select '{"a": {"b":{"c": "foo"}}}'::json#> '{a,b}' 报错
时间: 2023-07-19 13:45:28 浏览: 32
在 PostgreSQL 中,#> 运算符用于从 JSON 对象中提取一个 JSON 字段。在您的查询中,JSON 字段的路径“a,b”是不正确的,因为 JSON 对象“a”中的值不是一个 JSON 对象,而是一个 JSON 字符串。因此,您不能使用 #> 运算符来提取“a,b”路径中的 JSON 字段。
要解决这个问题,您可以使用#>> 运算符来提取 JSON 字符串值,如下所示:
```
SELECT '{"a": {"b":{"c": "foo"}}}'::json#>> '{a,b}';
```
这将返回“{"c": "foo"}”,它是一个 JSON 字符串值。
如果您需要在 JSON 对象中提取一个 JSON 字段,您需要使用一个有效的 JSON 对象路径。在您的示例中,正确的 JSON 对象路径应该是 "{a,b,c}"。如果您使用以下查询,则可以提取 JSON 对象中的“c”字段:
```
SELECT '{"a": {"b":{"c": "foo"}}}'::json#>> '{a,b,c}';
```
这将返回“foo”,它是 JSON 对象中的“c”字段的值。
希望这可以帮助您解决问题。
相关问题
select '{"a": {"b":{"c": "foo"}}}'::json#> '{a,b}' 报错:operator does not exist
这个错误是因为 `#>` 操作符只能用于 PostgreSQL 版本 9.3 以上,并且需要安装 `jsonpath` 扩展。如果你使用的是旧版本的 PostgreSQL,你需要使用 `->` 或者 `->>` 操作符来获取 JSON 嵌套对象的值。
例如,你可以使用以下查询来获取 `{"a": {"b":{"c": "foo"}}}` 中 `c` 的值:
```
SELECT '{"a": {"b":{"c": "foo"}}}'::json -> 'a' -> 'b' ->> 'c';
```
这将返回字符串 `"foo"`。
select '{"a": "foo"}'::json-> 'a' 报错:operator does not exist
这个错误是因为 `->` 操作符只能用于 PostgreSQL 版本 9.3 以上,并且需要安装 `json` 扩展。如果你使用的是旧版本的 PostgreSQL,你需要使用 `#>` 或者 `#>>` 操作符来获取 JSON 对象的值。
例如,你可以使用以下查询来获取 `{"a": "foo"}` 中 `a` 的值:
```
SELECT '{"a": "foo"}'::json #> '{a}';
```
这将返回字符串 `"foo"`。
另外,如果你使用的是 PostgreSQL 9.4 或以上版本,你可以使用 `->>` 操作符来获取 JSON 对象中的字符串值:
```
SELECT '{"a": "foo"}'::json->> 'a';
```
这也将返回字符串 `"foo"`。
相关推荐
![text/x-c++](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)