gpt4 book ai didi

SQL - 添加/禁用基于 Select 语句中的 bool 条件的 Where 子句 (ASP.net SQLDataSource)

转载 作者:行者123 更新时间:2023-12-05 01:46:37 24 4
gpt4 key购买 nike

我有一个 SQL select 语句,基本上就是

SELECT * FROM myTable 
WHERE status != 5

它比实际情况要复杂得多,但它的列名和连接大多令人费解。

我想做的是将参数作为一个值,我禁用 where 子句,即

SELECT * FROM myTable 
where CASE WHEN @parameter = 'true'
THEN --...add the where clause ('status != 5')

它不是那样工作的,但是有人有不同的方法吗?如果打开任何选项,我将在 SQLDatasource 中使用 ASP.net 和选择。这与向未登录用户隐藏特定记录但向其他用户显示有关。

TL;DR: 我可以根据 SQL 或 ASP.net 中的参数启用/禁用 where 子句吗

最佳答案

您可以使用动态 sql 按字面意思执行您的要求(即禁用 where 子句)。

declare @ssql varchar(max)
set @ssql = 'SELECT * FROM myTable'
+ CASE WHEN @parameter = 'true' THEN ' WHERE status != 5' ELSE '' END
EXEC (@ssql)

不过,如果能避免动态sql,以后阅读和修改会更方便。

由于您需要在 param = true 时过滤状态,但是当 param = false 时您不想过滤状态,您的 where 子句应该如下所示:

WHERE (@parameter=True AND status!=5) OR (@parameter=false)

关于SQL - 添加/禁用基于 Select 语句中的 bool 条件的 Where 子句 (ASP.net SQLDataSource),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34939155/

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