检查数据库中是否存在数据集

时间:2013-11-15 07:23:39

标签: java mysql arrays

我的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:我的阵列可以根据用户交互而改变。用户输入的内容存储在我的数组中,我需要检查数据库表中是否存在这些值。

3 个答案:

答案 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')

它可能会节省您的时间,但依赖于数据库中的内容以及结构的方式,它可能非常昂贵(时间,处理)