Java SQL返回搜索,即使不应执行检查
我有以下疑问:Java SQL返回搜索,即使不应执行检查,java,sql,Java,Sql,我有以下疑问: SELECT * FROM project WHERE year = 11 AND orderDate LIKE ? OR orderNo LIKE ? OR prodNo LIKE ? OR prodName LIKE ? OR inquiryDate LIKE ? OR confirmDate LIKE ? OR deliveryLT LIKE ? OR deliveryRiis LIKE ? OR signsPrice LIKE ? OR vrPric
SELECT * FROM project WHERE year = 11 AND orderDate LIKE ? OR orderNo LIKE ? OR prodNo LIKE ? OR prodName LIKE ? OR inquiryDate LIKE ? OR confirmDate LIKE ? OR deliveryLT LIKE ? OR deliveryRiis LIKE ? OR signsPrice LIKE ? OR vrPrice LIKE ? OR deliveryPrice LIKE ? OR unexpectPrice LIKE ? OR riisBonus LIKE ? OR kennBonus LIKE ? OR profit LIKE ? OR profitPercent LIKE ? OR quantity LIKE ?;
问题是,即使列年份不是11,我仍然收到数据,是因为我使用了还是?(使用问号是因为我使用了准备好的陈述)
当我这样做的时候
SELECT * FROM project WHERE year = 11 AND orderDate LIKE ? ;
它工作正常,所以我假设它是OR是正确的吗?如果是,我如何解决它?我希望其中一个是真的,今年是100%真的 在“或”之前加上“和”的状态,因此您的SQL相当于:
SELECT * FROM project WHERE ( year = 11 AND orderDate LIKE ? ) OR orderNo LIKE ?
OR prodNo LIKE ? OR prodName LIKE ? OR inquiryDate LIKE ?
使用添加的括号覆盖它以满足您的要求:
SELECT * FROM project WHERE year = 11 AND
(orderDate LIKE ? OR orderNo LIKE ?
OR prodNo LIKE ? OR prodName LIKE ? OR inquiryDate LIKE ?)
对,;并且是在
或
之前处理的,因此您基本上是在查询年份=11和订单日期(如?
或是否满足任何其他条件)的所有项目
您需要使用括号来明确哪些条件适用于和
,哪些条件应为或
ed
我假设你希望它看起来像这样:
SELECT * FROM project WHERE year = 11 AND (orderDate LIKE ? OR orderNo LIKE ? OR prodNo LIKE ? OR prodName LIKE ? OR inquiryDate LIKE ? OR confirmDate LIKE ? OR deliveryLT LIKE ? OR deliveryRiis LIKE ? OR signsPrice LIKE ? OR vrPrice LIKE ? OR deliveryPrice LIKE ? OR unexpectPrice LIKE ? OR riisBonus LIKE ? OR kennBonus LIKE ? OR profit LIKE ? OR profitPercent LIKE ? OR quantity LIKE ?)
非常感谢,我没有意识到语法的这一部分..虽然有意义,但我现在尝试一下,将返回结果。非常好用,非常感谢。如果允许的话,我会在9分钟内接受,你太快了:D