Ich verwende diese:PreparedStatement funktioniert nicht für substring_index?
PreparedStatement preStatement = conn.prepareStatement("SELECT * FROM SomeTable WHERE attributeId = ? AND substring_index(substring_index(rowIdCombo,',',2),',',-1) = ?");
preStatement.setString(1, anAttributeID.toString());
preStatement.setString(2, locationID.toString());
Suche in die gleiche Abfrage arbeitet auf dem MySQL-Terminal in Ordnung. Nur wenn PreparedStatement
in Java
verwendet wird, ist dies nicht der Fall.
rowIdCombo ist im Grunde eine Folge von Zahlen mit durch Komma getrennten Werten. Etwas wie dieses: 23,56,64,3
.
Die zurückgegebene Ergebnismenge ist leer. Wie bekomme ich diese Abfrage zu arbeiten?
Ist es nicht einfacher, die rowIdCombo in Java aufzuteilen und eine sauberere PreparedStatement zu schreiben? Für Lesbarkeitsprobleme zumindest und auch einfacher zu debuggen. – JDDelgado
Wenn ich 'substring_index' nicht verwende, gibt die Auswahl * 2 Millionen Zeilen zurück, was ein Problem sein wird, weil ich eine Datenbank auf einem Server abfrage. Ich brauche den Teilstring, der von SQL selbst gefunden wird, so dass nur die wenigen notwendigen Zeilen zurückgegeben werden. Auch, weil der SQL-Cursor nicht lange dauert, wenn eine große Anzahl von Zeilen zurückgegeben wird. – Nav
Halten Sie an, rowIdCombo wird entsprechend Ihrem Code als der Literal rowIdCombo-String anstelle des tatsächlichen Werts (23,56,64,2) behandelt. – JDDelgado