java - 如何在不使用许多语句的情况下进行 SQL 查询来测试许多通配符 id

标签 java sql oracle

我必须编写一个 SQL 查询来查找表中与另一个表的 ID 相似的 id。

从 TABLE_B 查询时的问题是,在 TABLE_B 中这些查询将附加一些字符串。

例如:

如果传递的ID是:123456789

然后在 TABLE_B 中它将类似于 ABC12456789XYZ

因此,为了选择这些,我想到编写一个如下所示的 SQL 查询,迭代数千个 and 子句:

String idCsList = "";
int i = 1;
for( String ids : idList ) {
   if( i == 1 ) {
      idCsList = idCsList + "'%" + ids + "%'" + ")";
      i++;
      continue;
   }
   idCsList = idCsList + " AND TABLE_B.id LIKE (" + "'%" + ids + "%'" + ")";
   i++;
}

但是这个想法行不通,因为SQL查询的长度有限制,查询会失败。而且时间也太长了。

是否有更好的方法以性能更优化的方式使用许多通配符运算符进行查询?

最佳答案

在 SQL 中,您可以构造传递到 LIKE 中的字符串:

SELECT * 
FROM TABLE_A A INNER JOIN TABLE_B B ON A.ID = B.ID
WHERE B.ID LIKE ('%' + A.ID + '%')

关于java - 如何在不使用许多语句的情况下进行 SQL 查询来测试许多通配符 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15288068/

相关文章:

java - 为什么不鼓励间接访问静态成员?

java - 如何将文件从特定行读取到另一特定行?

sql - Sql中的WHERE,组合两个快速条件会使成本成倍增加

sql - 迭代大型外部 postgres db,操作行,将输出写入 rails postgres db

database - 用于在开发数据库上创建类似 "test"环境的工具

java - 打包 MVP 层有什么最佳实践吗?

java - 使用 Shiro 进行身份验证失败

php - 向存在于多个数据库中的表插入一个值

oracle - 恢复已删除的记录

java.sql.SQLException : ORA-01830: date format picture ends before converting entire input string