gpt4 book ai didi

sql - 当提供的值为 null 时删除 where 子句

转载 作者:行者123 更新时间:2023-12-02 06:48:47 26 4
gpt4 key购买 nike

我想根据提供的值自动附加 where 子句

让我们考虑一个包含选择查询的存储过程

CREATE PROCEDURE [dbo].[example]
@From DATETIME,
@T0 DATETIME
AS
BEGIN TRY
SELECT *
FROM footable
WHERE Fromdate = @From AND Todate = @TO
END TRY

如果@From 的值为 null 那么 where 子句必须是

SELECT * 
FROM footable
WHERE Todate = @TO

有什么办法可以实现吗?

非常感谢您的回答。但这也不能解决我的问题,因为 @From@To 都是可选的。按照这种方法,我的代码会喜欢

SELECT * 
FROM footable
WHERE (Fromdate = @From OR @From IS NULL)
AND (Todate = @TO OR @To IS NULL)

在整个表中执行此结果。

最佳答案

用正常的逻辑处理即可。

SELECT * 
FROM footable
WHERE (Fromdate = @From or @From is null)
AND Todate = @TO
option (OPTIMIZE FOR (@From UNKNOWN))

编辑:添加了 option 子句,以便查询计划针对未知值进行优化,并且不受参数嗅探的影响以在缓存中创建初始计划。或者,如果使用情况已知,您可以使用已知值来生成您想要的计划。

我会先选择这个选项,然后再沿着选项(重新编译)的路线走下去——无论如何,这都需要每次都生成计划。

关于sql - 当提供的值为 null 时删除 where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50392661/

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