java - Jackcess 等效于具有 > ("strictly greater than") 条件的 SQL WHERE 子句

标签 java ms-access select where-clause jackcess

我想搜索日期列的值 > '2014/03/01' 的所有行。

如何做到这一点?如果没有 Date value = '2014/03/01'` 的行,如何在没有完整扫描表的情况下定位光标?

Table table = db.getTable("Facture");
IndexCursor cursor = CursorBuilder.createCursor(table.getIndex("DateIndex"));

Date search_date = Date('2014/03/01');
for(Row row : cursor.newEntryIterable(search_date)) { ... }

最佳答案

您已经创建了一个 IndexCursor,因此不需要进行表扫描。只需使用 IndexCursor#findClosestRowByEntry进行 >= 搜索,然后像这样跳过完全匹配(如果有):

Table table = db.getTable("Members");
String dateColumnName = "DateJoined";
Column dateColumn = table.getColumn(dateColumnName);
IndexCursor cursor = CursorBuilder.createCursor(table.getIndex(dateColumnName));

String searchDateAsString = "2014/03/01";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
Date search_date = sdf.parse(searchDateAsString);
cursor.findClosestRowByEntry(search_date);
if (cursor.isAfterLast()) {
    System.out.println(String.format("There are no rows with %s >= %s", dateColumnName, searchDateAsString));
}
else {
    // we want strictly greater than, so skip over the rows that are equal
    while (search_date.equals(cursor.getCurrentRowValue(dateColumn))) {
        if (!cursor.moveToNextRow()) break;
    }
    if (cursor.isAfterLast()) {
        System.out.println(String.format("There are no rows with %s > %s", dateColumnName, searchDateAsString));
    }
}
// now iterate over the remaining rows
while (!cursor.isAfterLast()) {
    System.out.println(sdf.format(cursor.getCurrentRowValue(dateColumn)));
    cursor.moveToNextRow();
}

关于java - Jackcess 等效于具有 > ("strictly greater than") 条件的 SQL WHERE 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25887554/

相关文章:

select - "Select"比较 Mathematica 中的相邻元素

php - 按 Column1 值选择行以选择同一行的 Column2

java - Cassandra 选择按添加日期排序的行

ms-access - MS Access值得学习吗?

mysql - 表中的示例通过输入长度超过20个字符的单词(在mysql中)

vba - 插入 Access 从 Access VBA 中的 Excel 中选择

mysql - MS Access ListBox 列属性与 ADODB Recordset 创建错误 424 需要对象

java - MongoDB Java 查询 : Pattern. 编译(文本)(类似于 '%' 的 SQL)结果

java - 获取 TreeMap 中给定节点的所有子节点

java - 从远程 HDFS 读取文件