我有一个存储过程,可根据4个参数从表中获取信息。
我想基于参数获取值,但是如果参数为NULL,则不会检查该参数。因此,如果所有4个参数都为null,则将显示整个表。
这是我的SP(如您所见,这仅适用于1个参数atm):
CREATE PROCEDURE myProcedure
@Param1 nvarchar(50),
@Param2 nvarchar(50),
@Param3 nvarchar(50),
@Param4 nvarchar(50)
AS
BEGIN
IF(@Param1 IS NULL)
BEGIN
SELECT Id, col1, col2, col3, col4 FROM myTable
END
ELSE
BEGIN
SELECT Id, col1, col2, col3, col4 FROM myTable WHERE col1 LIKE @Param1+'%'
END
END
有什么方法可以做到, 而 不必IF
为每种可能的组合都加一个(15个IF)?
怎么样
SELECT Id, col1, col2, col3, col4
FROM myTable
WHERE col1 LIKE @Param1+'%'
OR @Param1 IS NULL
在这种情况下,您可能还使用了
SELECT Id, col1, col2, col3, col4
FROM myTable
WHERE col1 LIKE ISNULL(@Param1,'')+'%'
但总的来说,您可以尝试类似
SELECT Id, col1, col2, col3, col4
FROM myTable
WHERE (condition1 OR @Param1 IS NULL)
AND (condition2 OR @Param2 IS NULL)
AND (condition3 OR @Param3 IS NULL)
...
AND (conditionN OR @ParamN IS NULL)
问题内容: 该查询允许对结果进行过滤,而不是对我将如何更新的结果进行过滤,因此它仅严格显示大学= 2时的结果 我将全文搜索与LIKE结合使用的原因是,由于全文搜索具有的最小字母数,并且由于我处于共享主机计划中,因此无法修改设置。结果,我将全文和LIKE结合在一起以适应 问题答案: 修正括号 具有比更高的优先级,因此只能与结合使用,而不能与测试结合使用。
问题内容: 我想要一个带有两个参数的spring数据存储库接口。有没有办法使其具有以下行为? 如果两个参数都有一个值,我希望它正常运行并对两个值都执行“与”运算。 例如,如果第二个参数为null,则它将仅按ParameterOne搜索 有什么建议么? 问题答案: 我不知道这是可能的仓库方法命名,但你可以使用像
我想要一个spring数据存储库接口,它采用两个参数。有没有办法使其具有以下行为? 如果这两个参数都有一个值,我希望它正常运行,并对这两个值执行“and”。 例如,如果第二个参数为null,则它将仅按ParameterOne进行搜索 有什么建议吗?
问题内容: 我有一个SP,这给了我很多困难。 sp获得两个参数@madeByUserId和@reportedByUserId。我想要类似的东西: 基本上,我想在where子句中提出一个案例,以包含另一个基于@reportedByUserId的null / not null状态的过滤条件 那可能吗? 非常感谢Radu 问题答案: 尝试:
问题内容: 这可能很明显,但我感到非常困惑。 我有一个带where子句(带参数列表的where)的SQL查询。如果所有这些参数都为null,则需要SQL忽略where子句并检索所有记录。这在SQL中容易做到吗?我知道一种解决方法是,如果参数为null,则仅使用代码删除where子句。 问题答案: 您可以尝试执行以下操作: 当然,它需要在您自己的查询中进行一些调整,但是现在您将检查参数是否为空或执行
我目前正在开发我的项目的搜索和过滤功能。我正在尝试使用此请求主体检索数据: 下面是从ReasearchRepository检索此数据的方法: 我的问题是,当我试图从请求中的给定值中查找数据时,它返回一个空列表[],即使它存在于数据库中。我想要实现的是,如果参数为null,它将忽略查询中的特定条件,并且仍将返回数据。 我刚看完贝尔东的那篇文章。 我还找到了另一篇关于使用Criteria API的文章