gpt4 book ai didi

SQL Server : Where condition based on the parameters

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

我有一个存储过程,如下所示。请注意,这只是一个示例,实际查询很长并且有很多列。

select 
*,
(select field_1 from table_1 where field1='xx' and disty_name = @disty_name) as field_1,
(select field_2 from table_2 where field1='xx' and disty_name = @disty_name) as field_2,
from
table_xx
where
disty_name = @disty_name

@disty_name 参数将传递一些值并且工作正常。

我的问题是,如果@disty_name参数包含值“All”,忽略disty_name = @disty_name条件的最佳和最短方法是什么

我只想在某些情况下删除 disty_name = @disty_name 条件,因为用户希望查询所有记录而不过滤 disty_name

最佳答案

我想我找到了答案..

第 1 步 - 在 SP 中使参数可选

@disty_name ncarchar(40) = null

然后在查询中

select *,
(select field_1 from table_1 where field1='xx' and (@disty is null or dist_name=@disty)) as field_1,
(select field_2 from table_2 where field1='xx' and (@disty is null or dist_name=@disty)) as field_2,
from table_xx where (@disty is null or dist_name=@disty)

如果您传递@disty,它将从查询中过滤掉disty值。如果参数中有 Null,它将解释为“Null is Null”,这是 true。如果我们有一个参数 callrd 'xyz' 它会将其解释为 xyz 为 null 并返回 false。这很酷..是吗?

关于SQL Server : Where condition based on the parameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29067629/

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