gpt4 book ai didi

Java native SQL 查询以在输入参数为 null 时显示所有值

转载 作者:行者123 更新时间:2023-11-29 13:52:12 25 4
gpt4 key购买 nike

我有以下 DAO 方法:

public String getSomeTable(final String param1) {
String sqlString = "select * from table where name ilike ?";
Query query = this.getEntityManager().createNativeQuery(sqlString);

query.setParameter(1, "%param1%");
}

如果 param1null 或为空,那么我想从表中选择所有条目。这样做的正确方法是什么?我目前正在使用以下内容:

public String getSomeTable(final String param1) {
String sqlString = "select * from table where name = ?";
Query query = this.getEntityManager().createNativeQuery(sqlString);

if(param1 == null)
query.setParameter(1, "%%");
else
query.setParameter(1, "%param1%");
}

但这不是可扩展的。我有整数、日期等数据类型。我想知道是否有一种方法可以跳过检查该参数是否为 null

我打算使用 COALESCE(?, CASE WHEN ? = '' THEN '%%' ELSE '%?%') 但我认为 ?对于特定参数只能使用一次。下一个 > 我写的链接到第二个参数。

最佳答案

在 SQL Server 上,我使用这样的东西,也许你可以将它翻译成 postgres:

DECLARE @variable INT = NULL;

SELECT *
FROM sysobjects
WHERE
(1 = CASE WHEN @variable IS NULL THEN 1 ELSE 2 END)
OR
(id LIKE @variable);

关于Java native SQL 查询以在输入参数为 null 时显示所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39027648/

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