MonetDB文档说,MonetDB支持JSON,但我找不到任何例子。 当我尝试在MonetDB客户端中实现此查询时:
json.filter({ "store": {
"bicycle": {
"color": "red",
"price": 19.95
}}},'$')
我收到此错误:语法错误,意外IDENT:" json"
答案 0 :(得分:1)
来自https://www.monetdb.org/pipermail/users-list/2014-November/007700.html:
在MonetDB中,JSON是一种列类型,因此您首先需要定义一个类型为JSON的列的表,如:
CREATE TABLE a (js JSON);
将JSON文档插入表格后,您可以执行以下查询:
SELECT json.filter(js, 'store') FROM a;
答案 1 :(得分:1)
您是否尝试在第一个参数旁边放置单引号?
以下适用于我。
select json.filter('{ "store": {
"bicycle": {
"color": "red",
"price": 19.95
}}}', '$');
结果是:
[{ "store": {
"bicycle": {
"color": "red",
"price": 19.95
}}}]
我也试过这个:
select json.filter('{ "store": {
"bicycle": {
"color": "red",
"price": 19.95
}}}', '$.store.bicycle.color');
结果是:
["red"]
将颜色作为字符串返回:
select json.text(json.filter('{ "store": {
"bicycle": {
"color": "red",
"price": 19.95
}}}', '$.store.bicycle.color'));
......我明白了:
red
如果我尝试:
select json.text(json.filter('{ "store": {
"bicycle": {
"color": "red",
"price": 19.95
}}}', '$.store.bicycle.price'));
...我以字符串的形式取回价格:
19.95
但我也可以把它作为一个数字取回来:
select json.number(json.filter('{ "store": {
"bicycle": {
"color": "red",
"price": 19.95
}}}', '$.store.bicycle.price'));