gpt4 book ai didi

java - SQL 返回搜索,即使检查不应该返回

转载 作者:太空宇宙 更新时间:2023-11-04 07:10:33 25 4
gpt4 key购买 nike

我有以下查询:

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,我仍然收到数据,是因为我使用了 OR 吗? (使用问号是因为我使用准备好的语句)。

当我这样做的时候

SELECT * FROM project WHERE   year = 11 AND orderDate LIKE ? ;

它工作正常,所以我假设它是 OR 是否正确?如果是这样,我该如何解决?我希望其中一个是真实的,并且年份是 100% 真实的;

最佳答案

SQL rules of precedence声明“and”位于“or”之前,因此您的 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 ?)

关于java - SQL 返回搜索,即使检查不应该返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20692921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com