我使用這個:PreparedStatement不適用於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());
使用相同的查詢搜索MySQL的終端上正常工作。只有在Java
中使用PreparedStatement
時纔會發生這種情況。
rowIdCombo基本上是一串逗號分隔的數字。像這樣:23,56,64,3
。
返回的結果集爲空。我如何獲得此查詢的工作?
是不是更容易在Java中分割rowIdCombo,並寫一個更乾淨的PreparedStatement?至少可讀性問題,也更容易調試。 – JDDelgado
如果我不使用'substring_index',select *將返回200萬行,這將是一個問題,因爲我正在查詢服務器上的數據庫。我需要通過SQL本身找到子字符串,以便只返回少數必需的行。另外,因爲SQL遊標在返回大量行時不會持續很長時間。 – Nav
等待,根據您的代碼,rowIdCombo被視爲字面rowIdCombo字符串,而不是實際值(23,56,64,2)。 – JDDelgado