【问题标题】:Using Couchbase String functions in N1QL response在 N1QL 响应中使用 Couchbase 字符串函数
【发布时间】:2018-07-04 14:32:27
【问题描述】:

我想检索和操作一些 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"
      }
    ]

所以在阅读了https://developer.couchbase.com/documentation/server/4.0/n1ql/n1ql-language-reference/stringfun.html 之后,我尝试了...

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

但我明白了

[
  {
    "replace_all": null
  }
]

[我完全是 Couchbase 新手。]

【问题讨论】:

    标签: couchbase n1ql


    【解决方案1】:

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

    您可以使用 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;
    

    https://developer.couchbase.com/documentation/server/current/n1ql/n1ql-language-reference/stringfun.html

    【讨论】:

    • 啊,我明白了。我原以为字符串函数完成了整个查询。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多