在 couchbase 查询之间

between query in couchbase

我正在使用 couchbase DB,我写了 namedQuery buy 我遇到了语法错误。 我的日期格式: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' 

真正的语法应该如何

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

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

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

我正在分享我的动态 select 查询,它从

获取参数

String query = "SELECT meta().id FROM " + bucketName + " WHERE SUBSTR(meta().id," + len + ") BETWEEN '" + dateStart + "'" + " AND " + "'" + dateEnd + "'" + " AND meta().id LIKE '" + prefix + "%'";

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;
}