java - JDBC - 一个查询返回单独的结果组

标签 java sql jdbc

我有一个如下所示的表格:Col:A(字符串),B(整数),C(字符串)

我希望能够获取 A 与正则表达式 foo 或正则表达式 bar 匹配的行。目前,我执行两个查询:

SELECT * FROM myTable WHERE A LIKE fooSELECT * FROM myTable WHERE A LIKE bar

我相信这些结果集之间不会有重复。

我希望能够通过运行单个查询来获得等效结果,这样我就不必为每个可接受的值扫描一次表,例如:

从 myTable 中选择 *,其中类似 foo 或类似 bar

我的问题是这样的查询会产生一个结果集,其中所有值都混杂在一起 - 然后我需要使用我自己的字符串比较来循环遍历以将两者分开。此外,匹配 A LIKE foo 的字符串可能非常不同,因此我不能只对 A 进行分组。

有没有一种方法可以执行表的单次遍历(为了效率),但仍然让 JDBC/SQL 完成将 A LIKE foo 的结果分成一组的工作,并且另一个A LIKE bar小组?

最佳答案

如果您确信不会出现重复项,请使用鉴别器运行 UNION ALL:

SELECT 'foo' as which_regex, *
FROM myTable
WHERE A LIKE foo
UNION ALL
SELECT 'bar' as which_regex, *
FROM myTable
WHERE A LIKE bar

JDBC 会将其作为单个查询运行,即使它有两个部分。结果中将添加一个名为 which_regex 的额外“鉴别器”列,其中包含字符串 'foo' 或字符串 'bar'。您可以使用此列来决定将结果的每一行放入哪个“桶”中。

关于java - JDBC - 一个查询返回单独的结果组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45721654/

相关文章:

java - 无法在jsp上显示希伯来文字符

java.lang.ClassCastException : [Ljava. lang.Object;不能转换为 com.sakhnin.classes.MonthlySummary

sql - 如何根据现有列重命名查询中的列

postgresql - 在简单的读写上激发 OOM

mysql - 使用 JDBC 抓取 mysql 查询并将其发送到 elasticsearch

javascript - 正则表达式不包含某些词

java - java中字符串的表达式求值

sql - 查询(或算法?)查找从两个不同位置到一个共享位置的最便宜的重叠航类

sql - 在 SQL Server 中将每三行分组为一组

java - 将用户名和页面名称保留到数据库