Sql WHERE语句中的CASE语句(等于和不等于)
我有下面的查询,其中我试图根据位变量的值从表中返回不同的值 有没有一种方法可以替代where条件使其工作Sql WHERE语句中的CASE语句(等于和不等于),sql,sql-server,tsql,Sql,Sql Server,Tsql,我有下面的查询,其中我试图根据位变量的值从表中返回不同的值 有没有一种方法可以替代where条件使其工作 DECLARE @isAggregate bit = 0 SELECT * FROM Fields WHERE FieldType CASE WHEN @isAggregate = 1 THEN = 'Aggregate' WHEN @isAggregate = 0 THEN <> 'Aggregate'
DECLARE @isAggregate bit = 0
SELECT
*
FROM
Fields
WHERE
FieldType
CASE
WHEN @isAggregate = 1 THEN = 'Aggregate'
WHEN @isAggregate = 0 THEN <> 'Aggregate'
END
DECLARE@isAggregate位=0
选择
*
从…起
领域
哪里
字段类型
案例
当@isAggregate=1时,则为“聚合”
当@isAggregate=0时,则为“聚合”
终止
您可以使用布尔逻辑,case表达式将不会以这种方式工作:
where (@isAggregate = 1 and FieldType = 'Aggregate') or
(@isAggregate = 0 and FieldType <> 'Aggregate')
其中(@isAggregate=1,FieldType='Aggregate')或
(@isAggregate=0且字段类型为“聚合”)
您可以使用布尔逻辑,case表达式将不会以这种方式工作:
where (@isAggregate = 1 and FieldType = 'Aggregate') or
(@isAggregate = 0 and FieldType <> 'Aggregate')
其中(@isAggregate=1,FieldType='Aggregate')或
(@isAggregate=0且字段类型为“聚合”)
演示如何在连接
条件下使用大小写
表达式。它在where
子句中的工作方式相同。根据所涉及的逻辑,可能有更有效的方法来编写查询。演示如何在联接
条件中使用大小写
表达式。它在where
子句中的工作方式相同。根据所涉及的逻辑,可能有更有效的方法来编写查询。