如果语句将C#if语句转换为SQL Server

时间:2017-04-05 07:28:40

标签: c# sql-server

我正在尝试将C#if语句转换为SQL Server if语句,因此我可以在sql server语句中使用它来根据此条件过滤记录。

>>> git checkout test
>>> git log --oneline
c05a4af  commit 7
b0e5f24  commit 6
74c9673  commit 5
...
6712bec  commit 1

>>> git rebase --onto 6712be 74c9673 c05a4af

}

我在下面做了什么。但我不认为这是正确的。

public bool checkSourceSystem(bool A, bool B, bool C, string SendToA, string SendToB, string SendToC)
    {
        int count = 0;

        if (A == true || B == true || C == true)
        {
            if(A == true && SendToA == "Success")
            {
                count++;
            }
            else
            {
                return false;
            }

            if(B == true && SendToB== "Success")
            {
                count++;
            }
            else
            {
                return false;
            }

            if (C == true && SendToC == "Success")
            {
                count++;
            }
            else
            {
                return false;
            }
        }
        else
        {
            return false;
        }

        if (count > 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

A,B,C,SendToA,SendToB,SendToC是表中的字段,sqlserver中SELECT CASE WHEN A = '1' AND SendToA = '1' THEN 'true' WHEN B = '1' AND SendToB = '1' THEN 'true' WHEN C = '1' AND SendToC = '1' THEN 'true' ELSE 'false' END FROM Table1 true的值= 1。 有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:1)

查看您的C#方法时,返回值为false时:

  1. ABC都是false
  2. A为false或Atrue,但SendToA不是Success
  3. B为false或Btrue,但SendToB不是Success
  4. C为false或Ctrue,但SendToC不是Success
  5. 这意味着true只会在以下情况下返回:

    1. A == B == C == true
    2. SendToA == SendToB == SendToC == Success
    3. 然后可以缩短为:

      public bool checkSourceSystem(bool A, bool B, bool C, string SendToA, string SendToB, string SendToC)
      {
          return (A && B && C) && SendToA == "Success" && SendToB == "Success" && SendToC == "Success";
      }
      

      这对应于以下CASE声明:

      select *,
          (
              CASE WHEN A=1
                  AND B=1
                  AND C=1
                  AND SendToA = 1
                  AND SendToB = 1
                  AND SendToC = 1
              THEN 'true'
              ELSE 'false'
              END 
          ) as TrueFalse
      from Table1
      

答案 1 :(得分:0)

使用下面的语句创建 SQL中的函数,这将返回RESULT(True / False)。

DECLARE @A BIT=0
DECLARE @B BIT=0
DECLARE @C BIT=0
DECLARE @SendToA VARCHAR(50)=''
DECLARE @SendToB VARCHAR(50)=''
DECLARE @SendToC VARCHAR(50)=''
DECLARE @Count INT=0

DECLARE @Result VARCHAR(50)=''

IF (@A=1 OR @B=1 OR @C=1)
BEGIN
    IF (@A=1 AND @SendToA='Success')
    BEGIN
        SET @Count=@Count+1
    END
    ELSE
    BEGIN
        SET @Result='False'
    END

    IF (@B=1 AND @SendToB='Success')
    BEGIN
        SET @Count=@Count+1
    END
    ELSE
    BEGIN
        SET @Result='False'
    END

    IF (@C=1 AND @SendToC='Success')
    BEGIN
        SET @Count=@Count+1
    END
    ELSE
    BEGIN
        SET @Result='False'
    END
END
ELSE
BEGIN
    SET @Result='False'
END

IF @Count>0
BEGIN
    SET @Result='True'
END

SELECT @Result AS Result