我必须编写一个 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/