与 Jackcess 匹配的列数据子串
Column data substring matching with Jackcess
在我的 Access 数据库 table 中,我有一个包含字符串的 cmt_data
列。例如:
Check in the packet TM(12,9) MRSS0319 'Monitoring List Report'.
我还有一个 List<String>
,其中包含 MRSS0319
、TRPP3006
等项目。我要做的是在我的 [=13= 之间执行子字符串匹配] 和 table 列,但我不太明白 Jackcess 提供的示例是多么简单。我找到的一个示例 here 显示:
Column col = table.getColumn("town");
cursor.beforeFirst();
while(cursor.moveToNextRow()) {
if(cursor.currentRowMatches(columnPattern, valuePattern)) {
// handle matching row here
}
}
方法 cursor.currentRowMatches(columnPattern, valuePattern)
看起来很有用。但是根据文档,该方法似乎只执行字符串相等匹配,所以现在我有点走投无路了。
感谢您的帮助。
当然,您可以创建一个小方法来检查 cmt_data
值是否匹配:
public static void main(String[] args) {
String dbPath = "C:/Users/Public/JackcessTest.accdb";
try (Database db = DatabaseBuilder.open(new File(dbPath))) {
Table table = db.getTable("cmt_table");
Cursor cursor = table.getDefaultCursor();
cursor.beforeFirst();
while (cursor.moveToNextRow()) {
Row row = cursor.getCurrentRow();
if (stringContainsSpecialValue(row.getString("cmt_data"))) {
// handle matching row here
System.out.println(row);
}
}
} catch (Exception e) {
e.printStackTrace(System.err);
}
}
private static boolean stringContainsSpecialValue(String str) {
boolean rtn = false;
List<String> specialValues = Arrays.asList("MRSS0319", "TRPP3006");
for (String val : specialValues) {
if (str.contains(val)) {
rtn = true;
break;
}
}
return rtn;
}
您也可以为您的光标创建自定义 ColumnMatcher,但这可能有点矫枉过正。
在我的 Access 数据库 table 中,我有一个包含字符串的 cmt_data
列。例如:
Check in the packet TM(12,9) MRSS0319 'Monitoring List Report'.
我还有一个 List<String>
,其中包含 MRSS0319
、TRPP3006
等项目。我要做的是在我的 [=13= 之间执行子字符串匹配] 和 table 列,但我不太明白 Jackcess 提供的示例是多么简单。我找到的一个示例 here 显示:
Column col = table.getColumn("town");
cursor.beforeFirst();
while(cursor.moveToNextRow()) {
if(cursor.currentRowMatches(columnPattern, valuePattern)) {
// handle matching row here
}
}
方法 cursor.currentRowMatches(columnPattern, valuePattern)
看起来很有用。但是根据文档,该方法似乎只执行字符串相等匹配,所以现在我有点走投无路了。
感谢您的帮助。
当然,您可以创建一个小方法来检查 cmt_data
值是否匹配:
public static void main(String[] args) {
String dbPath = "C:/Users/Public/JackcessTest.accdb";
try (Database db = DatabaseBuilder.open(new File(dbPath))) {
Table table = db.getTable("cmt_table");
Cursor cursor = table.getDefaultCursor();
cursor.beforeFirst();
while (cursor.moveToNextRow()) {
Row row = cursor.getCurrentRow();
if (stringContainsSpecialValue(row.getString("cmt_data"))) {
// handle matching row here
System.out.println(row);
}
}
} catch (Exception e) {
e.printStackTrace(System.err);
}
}
private static boolean stringContainsSpecialValue(String str) {
boolean rtn = false;
List<String> specialValues = Arrays.asList("MRSS0319", "TRPP3006");
for (String val : specialValues) {
if (str.contains(val)) {
rtn = true;
break;
}
}
return rtn;
}
您也可以为您的光标创建自定义 ColumnMatcher,但这可能有点矫枉过正。