между запросом в couchbase - PullRequest
       24

между запросом в couchbase

0 голосов
/ 25 октября 2018

Я использую базу данных couchbase, я написал namedQuery buy, я столкнулся с синтаксической ошибкой.формат моей даты: yyMMdd_HHmm

id: XX_YY_0038_2019-03-10 @ N 181025_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' 

как должен быть истинный синтаксис

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Я делюсь своим запросом динамического выбора, который получает параметры из

String query = "SELECT meta (). Id FROM " + bucketName + " WHERE SUBSTR (meta (). Id," + len)+ ") МЕЖДУ '" + 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;
}
0 голосов
/ 26 октября 2018

Ваша проблема - функция SUBSTR ().Это должно работать:

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

Возможно, вам потребуется отрегулировать эту начальную точку (23).

...