[英]Oracle query in java
我在使用Oracle时遇到了一些麻烦,因为我习惯了MySql语法,
我正在尝试在Java程序中实现查询,但我不断收到错误消息:ora-0933 sql命令未正确结束。
我的查询是:
String query1 = "SELECT t.nome, h.Valor_Atual, h.Valor_Antigo, a.nome
FROM Tecnologias t, Historico h, Academista a
WHERE h.Id_Academista = a.Id_Academista
AND h.Id_Tecnologia = t.Id_Tecnologia
AND (Valor_Atual || Valor_Antigo || nome)
LIKE '%" +ValToSearch + "%'";
我做错了什么还是Oracle语法?
非常感谢!
尽管(Valor_Atual || Valor_Antigo || nome) LIKE '%" +ValToSearch + "%'
是有效的SQL语法,但如果要搜索的值恰好匹配从一列的值到下一个列的交叉值,则它可能会错误地匹配。 。 因此,您需要使用OR
,并且需要分别检查列。
其他事宜:
JOIN
语法 PreparedStatement
而不是字符串连接 这意味着您的代码应如下所示:
String sql = "SELECT t.nome, h.Valor_Atual, h.Valor_Antigo, a.nome" +
" FROM Historico h" +
" JOIN Academista a ON a.Id_Academista = h.Id_Academista" +
" JOIN Tecnologias t ON t.Id_Tecnologia = h.Id_Tecnologia" +
" WHERE h.Valor_Atual LIKE ?" +
" OR h.Valor_Antigo LIKE ?" +
" OR a.nome LIKE ?";
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setString(1, "%" + ValToSearch + "%");
stmt.setString(2, "%" + ValToSearch + "%");
stmt.setString(3, "%" + ValToSearch + "%");
try (ResultSet rs = stmt.executeQuery()) {
while (rs.next()) {
// code here
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.