我需要维护一个遗留应用程序,它会触发 SQL 查询来搜索存储在不同位置(即站、槽和子槽)的项目。当前查询将“AND (...)”部分附加到主查询,因此它可以动态构建更严格的搜索条件。
当第一个if返回 true(意味着用户在桌面应用程序的字段中键入内容并按下 Enter 键)时,我需要检查 jTextFieldPCA 的数据是否符合任何内部条件。数据的值通常是一个数字,但也可以是一个字母。
我正在尝试的正则表达式是这些,但我错过了一些东西。如何确保 6 的值落在第一个内部条件上,6.6 的值落在第二个内部条件上,以及 6.6.6 的值被第三个内部条件捕获?
if (jTextFieldPCA.getText().compareTo("") != 0) {
if (jTextFieldPCA.getText().matches("[A-Za-z0-9]") ) {
strBuilder.append(" AND CAST(complist.Station AS VARCHAR) LIKE ");
}
if (jTextFieldPCA.getText().matches("[A-Za-z0-9]" + "." + "[A-Za-z0-9]") ) {
strBuilder.append(" AND CAST(complist.Station AS VARCHAR) + '.' + CAST(complist.Slot AS VARCHAR) LIKE ");
}
if (jTextFieldPCA.getText().matches("[A-Za-z0-9]" + "." + "[A-Za-z0-9]" + "." + "[A-Za-z0-9]") ) {
strBuilder.append(" AND CAST(complist.Station AS VARCHAR) + '.' + CAST(complist.Slot AS VARCHAR) + '.' + CAST(complist.SubSlot AS VARCHAR) LIKE ");
}
(...)
提前致谢,
特鲁德维希