【问题标题】:SQL Filter SELECT statementSQL 过滤器 SELECT 语句
【发布时间】:2016-03-29 15:59:25
【问题描述】:

我需要过滤我的选择语句以只获取一个值是位值是真的。例如

 DECLARE
 @Value AS NVARCHAR(20) = 'Some Value'
 @BIT AS BIT = 1,
 @Stuff AS NVARCHAR(20) = 'Stuff'

 SELECT 
     @Stuff,
     IF @BIT = 1 BEGIN @Value END ELSE BEGIN '' END

基本上是这样的。我只想选择正确的值。我有多个复选框,如果用户选择其中一个复选框,数据应该只拉回该数据,所以我使用位来跟踪它是否被选中。在此先感谢

【问题讨论】:

  • 具有这些复选框的任何应用程序的代码都比查询更好地处理这个问题。

标签: sql sql-server tsql case


【解决方案1】:

使用CASE 而不是IF:

SELECT 
    @Stuff,
    CASE WHEN @BIT = 1 THEN @Value ELSE '' END

或

CASE @BIT WHEN 1 THEN @Value ELSE '' END

【讨论】:

  • 感谢亚历克斯,这应该适用于这种情况。我正在使用这些数据来构建一个报告,所以通过一个没有名称的列,它应该忽略它。
【解决方案2】:

有点不清楚你要做什么,所以我会给你几种方法:

如果你限制你的选择语句,你可以这样做:

SELECT ...
FROM ...
WHERE myBitField = 1

或者,如果你的位域是一个被传入的变量,你可以这样做:

SELECT ...
FROM ...
WHERE myBitField = @BIT

如果不想限制选择结果,可以使用case语句:

SELECT CASE WHEN @BIT = 1 THEN @Value ELSE '' END as BitResult
FROM ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    相关资源
    最近更新 更多