2016-07-17 18 views
0

Wie sende ich das Array von zwei Spaltenwerte an die Where-Bedingung einer SQL-Abfrage? Die Werte in 'in' sind variabel. Siehe ein Beispiel unten.Übergeben Sie ein Array mit zwei Spaltenwerten an eine Abfrage - SpringJDBC

select * 
from table_a ncjp 
where 
    (ncjp.col_a,ncjp.col_b) in ((2855824,5),(2855824,6)); 
+0

Ich glaube nicht, dass es native Unterstützung dafür gibt. Sie müssen SQL mit der dynamischen Anzahl von '?' Markern erstellen und Positionsargumente (flat array) beim 'query()' Aufruf verwenden. – Andreas

+0

@Andreas Ok. danke – Zeus

+0

Ich verwende String-Verkettung Ansatz als meine Lösung für jetzt. – Zeus

Antwort

-2

Der beste Weg, dies bauen kann, ist durch eine Funktion zu schaffen, die den Wert auf dem Index dieses 2D-Array liefert so im so etwas wie dieses

public object getElementAt(object [] []arr, int a, b){ 
return arr[a,b]; 
} 

guesing und dann können Sie tun

select * 
from table_a ncjp 
where 
    (ncjp.col_a,ncjp.col_b) in :x; 
query.setParameter("x", getElementAt(arr,1,2)); 
+0

Das wird nicht das Ergebnis erhalten, OP ist danach. – Andreas

+0

@Andreas, in allem, was ich gelesen habe, denke ich, dass eine Form davon ist, was das OP angefordert hat, oder eine Änderung davon! er könnte nach etwas anderem suchen, aber in der Art, wie ich die Antwort lese, so sehe ich es! –

+0

In dem Fall, in dem er alle Werte des 2d-Arrays in der Abfrage senden möchte, muss er eine Art Schleife ausführen, um die Abfragezeichenfolge gemäß den Werten im Array zu erstellen! –