繁体   English   中英

SQL,搜索真,假或两者

[英]SQL, search for true, false or both

我目前正在尝试编写可以返回TRUE,FALSE或NEITHER的SQL搜索代码。 虽然我目前拥有的代码可以使用,但是我不喜欢必须复制和粘贴大量代码这一事实,并且我想知道是否有一种方法可以减少此处的代码量。

DECLARE @FYear int = 2017
DECLARE @FQuarter char(2) = 'Q2'
DECLARE @FINANCIAL_GOAL_MET bit = NULL

IF(@FINANCIAL_GOAL_MET IS NULL)
    SELECT  FYear, 
            FQuarter, 
            IIF(FINANCIAL_GOAL_MET = 'TRUE', 1,0) AS Financial_Goal_Met
    FROM    Finances    
    WHERE   (FYear = @FYear) 
            AND (FQuarter = @FQuarter)
ELSE
    SELECT  FYear, 
            FQuarter, 
            IIF(FINANCIAL_GOAL_MET = 'TRUE', 1,0) AS Financial_Goal_Met
    FROM    Finances
    WHERE   (FYear = @FYear) 
            AND (FQuarter = @FQuarter)
            AND FINANCIAL_GOAL_MET = @FINANCIAL_GOAL_MET

您可以在一个查询中执行此操作:

DECLARE @FYear int = 2017;
DECLARE @FQuarter char(2) = 'Q2';
DECLARE @FINANCIAL_GOAL_MET bit = NULL;

SELECT FYear, FQuarter, 
       (CASE WHEN FINANCIAL_GOAL_MET = 'TRUE' THEN 1 ELSE 0
        END) AS Financial_Goal_Met
FROM Finances f  
WHERE (FYear = @FYear) AND (FQuarter = @FQuarter) AND
      (@FINANCIAL_GOAL_MET IS NULL OR FINANCIAL_GOAL_MET = @FINANCIAL_GOAL_MET);

对于不熟悉SQL Server中bit类型的用户,可以接受'TRUE'进行比较,即使它是字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM