gpt4 book ai didi

java - 将 NULL 传递给 SQL 查询

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

我通过 QueryRunner 得到空结果,但如果我执行查询,我会在 SQL Developer 中重新调整行。

ProductId: null
SKUCode:61334a

ServiceResult<List<T>> market = service.getMarketProduct(null,'61334a');

上述服务代码将到达DAO层,如下所示:

return QueryHelper.queryList( GET_PRODUCTS, new Object[]{ 0 == ProductId? null : ProductId, SKUCode}, this.cs, CPCMarketProductVO.class );

GET_PRODUCTS= SELECT * FROM table WHERE ProductId= nvl(?, ProductId) AND prd_id = nvl(?, SKUCode).

有人可以告诉我为什么我通过 java 代码得到空结果以及 SQL Developer 中如何返回结果。

最佳答案

我认为你对 what NVL function is for 有点困惑。实际上,当查询返回 NULL 值并且您正在执行某种 operation or aggregate function in it 时,它很有用。 。相反,您使用它来创建请求。

也许您应该更改 GET_PRODUCTS 查询,例如

GET_PRODUCTS= SELECT * FROM table WHERE ProductId = ? AND prd_id = ?

当您用 new Object[]{ 0 == ProductId? 替换 ? 值时null : ProductId, SKUCode} 和值 ProductId = null, SKUCode = 61334a 查询变为:

GET_PRODUCTS= SELECT * FROM table WHERE ProductId = null AND prd_id = 61334a

返回一个空结果集,如果 ProductId 不可为空(我假设是主键),这应该是正确的。

如果您的表中有 NULL ProductId,则结果集可能不为空。

关于java - 将 NULL 传递给 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25422898/

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