gpt4 book ai didi

SQL:如果参数为空,则选择所有行,否则仅选择匹配的行

转载 作者:行者123 更新时间:2023-12-04 23:06:31 26 4
gpt4 key购买 nike

我有一个变量进入存储过程。此变量可以有值或为空。

  • 如果变量为空,我需要选择表中的所有行(一些为 NULL 值,一些为实际数据)。
  • 如果变量不为空,我只需要选择变量与列匹配的行。

  • 我创建了这个条件语句来帮助解释我想要实现的目标:
    if 

    @status is null, select all the rows (rows with NULL for table.status, and rows with actual data for table.status)

    else

    select the rows where @status equals table.status

    这就是我想出的(其中之一):
    WHERE 
    book.book_nme LIKE @search_input AND
    book.book_desc LIKE @search_input AND
    (book.author LIKE ISNULL(@author, book.author)) AND
    (bookStatus.status_desc LIKE ISNULL(@status, bookStatus.status_desc))

    唯一的问题是如果 bookStatus.status_desc为 NULL,则不会选择该行(@status 为 null 时)

    我很困惑,我也尝试查找 Coalesce,它似乎优先考虑值,但是......我不知道该怎么做。

    我应该在存储过程中创建一个巨大的 CASE 并有两个选择语句吗?

    最佳答案

    WHERE  book.book_nme LIKE @search_input AND
    book.book_desc LIKE @search_input AND
    (@author IS NULL OR book.author LIKE @author) AND
    (@status IS NULL OR bookStatus.status_desc LIKE @status) ...

    更新
    @author 添加了两个条件和 @status

    关于SQL:如果参数为空,则选择所有行,否则仅选择匹配的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10999322/

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