我的文本类型列包含JSON值。
{
"customer": [
{
"details": {
"customer1": {
"name": "john",
"addresses": {
"address1": {
"line1": "xyz",
"line2": "pqr"
},
"address2": {
"line1": "abc",
"line2": "efg"
}
}
}
"customer2": {
"name": "robin",
"addresses": {
"address1": null
}
}
}
}
]
}
如何使用查询提取列的'address1'JSON字段?
首先,我尝试获取JSON值,然后我将使用解析。
SELECT JSON customer from text_column;
根据我的查询,我收到以下错误。
com.datastax.driver.core.exceptions.SyntaxError:第1:12行没有可行性 输入'客户'的替代方案(SELECT [JSON]客户......)
com.datastax.driver.core.exceptions.SyntaxError:第1:12行没有可行性 输入'customer'的替代方案(SELECT [JSON] customer ...)
Cassandra版本2.1.13
答案 0 :(得分:1)
您无法在Cassandra v2.1.x CQL v3.2.x中使用SELECT JSON
对于Cassandra v2.1.x CQL v3.2.x:
SELECT之后唯一支持的操作是:
在Cassandra v2.2.x CQL v3.3.x中介绍:SELECT JSON
使用SELECT语句,新的JSON关键字可用于将每一行作为单个JSON编码的映射返回。 SELECT语句行为的其余部分是相同的。
结果映射键与普通结果集中的列名相同。例如,像“SELECT JSON a,ttl(b)FROM ...”这样的语句会产生一个带有键的地图" a"和" ttl(b)"。但是,这是一个值得注意的例外:对于具有INSERT JSON行为的对称性,具有大写字母的区分大小写的列名称将用双引号括起来。例如,“SELECT JSON myColumn FROM ...”将导致一个地图键" \" myColumn \"" (注意转义的报价)。
地图值将是结果集值的JSON编码表示(如下所述)。