在N1QL响应中使用Couchbase字符串函数

在N1QL响应中使用Couchbase字符串函数,couchbase,n1ql,Couchbase,N1ql,我想检索和操作一些Couchbase文档,即检索和执行一些字符串操作,但我在网上看不到初学者的示例 我是在这里使用正确的方法还是有更简单的方法 SELECT meta().id FROM bucket_foo where meta().id like "%-foobar" ORDER BY meta().id 这给了我查询结果 [ { "id": "172.26.138.52-foobar" }, { "id": "172.26.138.53-fo

我想检索和操作一些Couchbase文档,即检索和执行一些字符串操作,但我在网上看不到初学者的示例

我是在这里使用正确的方法还是有更简单的方法

SELECT  meta().id    
FROM bucket_foo 
where meta().id like  "%-foobar"  
ORDER BY meta().id
这给了我查询结果

[
  {
    "id": "172.26.138.52-foobar"
  },
  {
    "id": "172.26.138.53-foobar"
  },
  {
    "id": "172.26.138.64-foobar"
  }
]
我想删除后缀,即将其转换为:

 [
      {
        "id": "172.26.138.52"
      },
      {
        "id": "172.26.138.53"
      },
      {
        "id": "172.26.138.64"
      }
    ]
所以读了之后我试着

SELECT  REPLACE(
  (SELECT meta().id  FROM foo where meta().id like  "%-foobar"  ORDER BY meta().id)
, "-foobar", "") as replace_all;
但我明白了

[
  {
    "replace_all": null
  }
]

[我是一个十足的Couchbase新手。]

你们的方法是正确的,子查询返回数组,你们不能替换数组。在这种情况下,不需要子查询

可以使用RTRIM()或REPLACE()或SUBSTR()或类似函数

SELECT RTRIM(meta().id,"-foobar") AS id
FROM bucket_foo
where meta().id like  "%-foobar"
ORDER BY id;


啊,我明白了。我原以为字符串函数完成了整个查询。谢谢
SELECT REPLACE(meta().id,"-foobar","") AS id
FROM bucket_foo
where meta().id like  "%-foobar"
ORDER BY id;
SELECT SUBSTR(meta().id,0,LENGTH(meta().id)-LENGTH("-foobar")) AS id
FROM bucket_foo
where meta().id like  "%-foobar"
ORDER BY id;