Sql 选择列名并在Couchbase上查询“LIKE”
我想从一个bucket中获取所有列名 我发现了一个查询:Sql 选择列名并在Couchbase上查询“LIKE”,sql,couchbase,n1ql,Sql,Couchbase,N1ql,我想从一个bucket中获取所有列名 我发现了一个查询: SELECT ARRAY_DISTINCT(ARRAY_AGG(v)) AS column FROM mybucket b UNNEST object_names(b) AS v 它的列名数组,但我需要像SQL命令。是这样的: SELECT column FROM mybucket WHERE column LIKE '%test%' 有办法做到这一点吗?这是一个棘手的问题,具体取决于您希望生成的结构是什么。免责声明,也许有一种更简洁
SELECT ARRAY_DISTINCT(ARRAY_AGG(v)) AS column
FROM mybucket b UNNEST object_names(b) AS v
它的列名数组,但我需要像SQL命令。是这样的:
SELECT column
FROM mybucket
WHERE column LIKE '%test%'
有办法做到这一点吗?这是一个棘手的问题,具体取决于您希望生成的结构是什么。免责声明,也许有一种更简洁的方法可以做到这一点,但我还没有找到,也许还有另一种方法不涉及对象名称 但不管怎样,对我来说,关键是 例如:
SELECT ARRAY a FOR a IN ARRAY_DISTINCT(ARRAY_AGG(allFieldNames))
WHEN a LIKE '%test%' END AS filteredFieldNames
FROM mybucket b UNNEST object_names(b) AS allFieldNames
将返回如下结果
[
{
"filteredFieldNames": [
"testField1",
"anotherTestField"
]
}
]
如果需要不同的格式,可以使用数组运算符表达式。例如:
SELECT ARRAY { "fieldName" : a } FOR a IN
ARRAY_DISTINCT(ARRAY_AGG(allFieldNames))
WHEN a LIKE '%test%' END AS filteredFieldNames
FROM mybucket b UNNEST object_names(b) AS allFieldNames
这将返回:
[
{
"filteredFieldNames": [
{
"fieldName": "testField1"
},
{
"fieldName": "anotherTestField"
}
]
}
]
这是一个棘手的问题,具体取决于您希望生成的结构是什么。免责声明,也许有一种更简洁的方法可以做到这一点,但我还没有找到,也许还有另一种方法不涉及对象名称 但不管怎样,对我来说,关键是 例如:
SELECT ARRAY a FOR a IN ARRAY_DISTINCT(ARRAY_AGG(allFieldNames))
WHEN a LIKE '%test%' END AS filteredFieldNames
FROM mybucket b UNNEST object_names(b) AS allFieldNames
将返回如下结果
[
{
"filteredFieldNames": [
"testField1",
"anotherTestField"
]
}
]
如果需要不同的格式,可以使用数组运算符表达式。例如:
SELECT ARRAY { "fieldName" : a } FOR a IN
ARRAY_DISTINCT(ARRAY_AGG(allFieldNames))
WHEN a LIKE '%test%' END AS filteredFieldNames
FROM mybucket b UNNEST object_names(b) AS allFieldNames
这将返回:
[
{
"filteredFieldNames": [
{
"fieldName": "testField1"
},
{
"fieldName": "anotherTestField"
}
]
}
]
对象名称仅提供顶级字段名称,不包括嵌套字段
对象名称仅提供顶级字段名称,不包括嵌套字段