2013-11-15 29 views
-1

我有一些字符串在我的Java代碼中的數組。我想檢查該數組中的值(以及哪個)存在於我正在使用的mySql數據庫中。我試圖做的方式是查詢數組中每個單獨值的數據庫。我想知道是否有更有效的方法來做到這一點? 在此先感謝。檢查數據集是存在於數據庫

在我的Java代碼:

String[] arrProducts=new String[]{"AB","BC","CD","AE","fg","BV","etc"}; 

在MySQL數據庫產品,我有一個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'; 

SO取決於我的數組中的元素數量我需要發送多個查詢。

編輯2:我的陣列可以根據用戶交互改變。用戶輸入的內容存儲在我的數組中,我需要檢查這些值是否存在於數據庫表中。

+1

你能分享表結構和你的查詢嗎? – Mureinik

回答

0

您可以使用下面的「在」 keyword.Just傳遞數組爲「在」參數生成的查詢中的值將看起來像下面這樣:

select * from ProductsInventory where productId in ("AB","BC","CD","AE","fg","BV","etc"); 

但如果陣列太長,將會導致相當大的性能下降。

-1

你可以嘗試這樣的:

SELECT * from ProductsInventory where productId in ('AB,'BC','CD') 

它可能會節省您的時間,但依賴於什麼在數據庫中,事情是如何構建它可能是相當昂貴的(時間,處理)

0

作爲IN結構的替代或對rlike的正則表達式的支持,您可以使用全文搜索。該集成解決方案的功能速度可能受到限制,但第三方解決方案(與MySQL和Java完美集成)可以爲複雜功能提供良好性能,如Sphinx或Solr,但需要更多資源:Full text options in MySQL that allows search in natural language

相關問題