我的Java代码中有一些字符串数组。我想检查该数组中的值是否(和哪些)存在于我正在使用的mySql数据库中。我尝试这样做的方法是查询数组中每个单独值的数据库。我想知道是否有更有效的方法来做到这一点? 提前谢谢。
在我的java代码中:
String[] arrProducts=new String[]{"AB","BC","CD","AE","fg","BV","etc"};
在mySql Products数据库中,我有一个productsInventory表,它有一个productId列。所以基本上我想检查整个arrProduct值是否存在于productId列中而不是单独查询,如:从ProductsInventory中选择*,其中productId类似于'AB'。
EDIT1: 所以我的表看起来像这样:
ProductsInventory-> {产品名称,的productId}
正确的我正在使用一个查询查询我的数组中的每个值。
例如: 从ProductsInventory中选择*,其中productId类似于'AB';
Select * from ProductsInventory where productId like 'BC';
Select * from ProductsInventory where productId like 'CD';
根据我的数组中的元素数量,我需要发送多个查询。
编辑2:我的阵列可以根据用户交互而改变。用户输入的内容存储在我的数组中,我需要检查数据库表中是否存在这些值。
答案 0 :(得分:0)
您可以将以下内容与'in'关键字一起使用。只需将数组作为'in'参数内的值传递,结果查询将如下所示:
select * from ProductsInventory where productId in ("AB","BC","CD","AE","fg","BV","etc");
但如果数组太长,将会导致相当大的性能下降。
答案 1 :(得分:0)
作为IN
结构的替代方案,或对rlike
正则表达式的支持,您可以使用全文搜索。集成解决方案的功能速度有限,但第三方解决方案(与MySQL和Java完美集成)可以为Sphinx或Solr等复杂功能提供良好的性能,代价是更多资源:Full text options in MySQL that allows search in natural language。 / p>
答案 2 :(得分:-1)
SELECT * from ProductsInventory where productId in ('AB,'BC','CD')
它可能会节省您的时间,但依赖于数据库中的内容以及结构的方式,它可能非常昂贵(时间,处理)