【问题标题】:between query in couchbase在沙发库中的查询之间
【发布时间】:2018-10-25 14:54:25
【问题描述】:

我正在使用 couchbase DB,我写了 namedQuery 购买我遇到了语法错误。 我的日期格式:yyMMdd_HHmm

id :XX_YY_0038_2019-03-10@N181025_1636

SELECT meta().id FROM `TABLE_NAME` WHERE meta().id.SUBSTR(23,33) BETWEEN '181025_1650%' AND '181025_1730'
SELECT meta().id FROM `TABLE_NAME` WHERE substr(meta.id(),23,33) BETWEEN '181025_1711' AND '181025_1751'
SELECT meta().id FROM `TABLE_NAME` WHERE meta.id.substr(23,33) BETWEEN '181025_1711' AND '181025_1751' 

真正的语法应该如何

【问题讨论】:

    标签: database select couchbase between n1ql


    【解决方案1】:

    您的问题是 SUBSTR() 函数。这应该有效:

    SELECT meta().id 
    FROM TABLE_NAME 
    WHERE SUBSTR(meta().id, 23) BETWEEN '181025_1650' AND '181025_1730'
    

    您可能需要调整该起点 (23)。

    【讨论】:

      【解决方案2】:

      我正在分享从 out 获取参数的动态选择查询

      字符串查询 = "SELECT meta().id FROM " + bucketName + " WHERE SUBSTR(meta().id," + len + ") BETWEEN '" + dateStart + "'" + " AND " + "'" + dateEnd + "'" + " AND meta().id LIKE '" + 前缀 + "%'";

      public static Set<String> getDocument(String bucketName, Bucket bucket, String dateStart, String dateEnd, String key) {
          Set<String> keys = new HashSet<>();
          String prefix = KEY_PREFIX + key;
          String len = String.valueOf(prefix.length());
          String query = "SELECT meta().id FROM `" + bucketName + "` WHERE SUBSTR(meta().id," + len + ") BETWEEN '" + dateStart + "'" + " AND " + "'" + dateEnd + "'" + " AND meta().id LIKE '" + prefix + "%'";
          N1qlQueryResult result = bucket.query(N1qlQuery.simple(query));
          for (N1qlQueryRow n1qlQueryRow : result) {
              keys.add(n1qlQueryRow.toString());
          }
          return keys;
      }
      

      【讨论】:

      • 嗨,琳达,感谢您的贡献。这实际上是对您问题的回答,还是应该成为您问题的一部分的更多信息?如果是答案,您可能需要提供更多信息。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-27
      • 1970-01-01
      • 2017-09-19
      • 1970-01-01
      相关资源
      最近更新 更多