我正在尝试将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。
有人可以帮帮我吗?
答案 0 :(得分:1)
查看您的C#
方法时,返回值为false
时:
A
,B
,C
都是false
A
为false或A
为true
,但SendToA
不是Success
B
为false或B
为true
,但SendToB
不是Success
C
为false或C
为true
,但SendToC
不是Success
这意味着true
只会在以下情况下返回:
A
== B
== C
== true
和SendToA
== SendToB
== SendToC
== Success
然后可以缩短为:
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