gpt4 book ai didi

mysql - SQL:使用 IFF 根据用户选择的参数设置条件

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

我真的需要一些帮助/建议。我有 4 个参数:

1) DATE
2) Hashtag
3) Make
4) Model

我正在尝试构建一个查询,用户可以将 Hashtag、Make 或 Model 参数保留为 null(日期参数是必需的,不能保留为 null)

例如:

如果用户选择 05/25/2017 作为“DATE”参数,将“Hashtag”参数留空,“Make”参数为“honda”,“Model”参数为“civic”,

报告将:1) 过滤日期字段为 05/25/2017,2) 过滤“品牌”字段为“本田”,3) 过滤“型号”字段为“思域”。 (由于用户将“Hashtag”参数保留为 NULL,因此报告不会过滤“Hashtag”字段中的任何内容)

我如何编写 WHERE 子句,以便如果用户将某个参数留空(“DATE”除外),查询将跳过对该参数的筛选并继续进行下一个参数?

类似的东西:

WHERE Opened_Time = @DATE
AND ( IFF @Hashtag IS NOT NULL THEN HASHTAG_ID = @Hashtag
ELSE IFF @Make IS NOT NULL THEN MAKE_ID = @Make
ELSE IFF @Model IS NOT NULL THEN MODEL_ID = @Model
ELSE dont do anything? )

我意识到 IFF 部分几乎不正确,我只是想尝试解释一下我希望报告做什么。

这有意义吗?任何帮助将不胜感激!!

最佳答案

您只需要一个或条件,并在您的过程中将这三个值默认为 NULL

create someProc (@DATE DATE, 
@Hashtag varchar(64) = NULL,
@Make varchar(64) = NULL,
@Model varchar(64)=NULL)
AS

SELECT ...
FROM ...
WHERE Opened_Time = @DATE
AND (@Hashtag IS NULL OR HASHTAG_ID = @Hashtag)
AND (@Make IS NULL OR MAKE_ID = @Make)
AND (@Model IS NULL OR MODEL_ID = @Model)

关于mysql - SQL:使用 IFF 根据用户选择的参数设置条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44289080/

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