Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Where子句中使用if语句执行SQL查询_Sql_Sql Server - Fatal编程技术网

在Where子句中使用if语句执行SQL查询

在Where子句中使用if语句执行SQL查询,sql,sql-server,Sql,Sql Server,需要使用Where子句中的IF语句执行SQL查询 SELECT CASE WHEN Isnull(CustGuarFlag ,'') = '' THEN DocName ELSE DocName + ' - '+ CASE WHEN CustGuarFlag= 'C' THEN 'Customer' ELSE 'Guarantor'

需要使用
Where
子句中的
IF
语句执行SQL查询

SELECT 
    CASE 
        WHEN Isnull(CustGuarFlag ,'') = '' THEN DocName 
        ELSE DocName + ' - '+ 
             CASE 
                 WHEN CustGuarFlag= 'C' THEN 'Customer'
                 ELSE 'Guarantor' 
             END 
    END DocName, 
    ISNULL(A.DOCSTAGE, '') DOCSTAGE, 
    ISNULL(A.DOCREFNO,'') DOCREFNO, 
    ISNULL(CONVERT(VARCHAR, A.DOCREFDT, 103), '') DOCREFDT, 
    ISNULL(CONVERT(VARCHAR, A.RECDDT, 103), '') RECDDT , 
    ISNULL(A.DOCVALUE, 0) DOCVALUE , 
    ISNULL(CONVERT(VARCHAR, A.DOCVLDUPTO, 103), '') DOCVLDUPTO, 
    a.pk_id AS AppDocpk, 
    b.pk_id AS Docpk, 
    CASE 
       WHEN Isnull(a.DocVerifiedStatus, '') = 'null' 
          THEN '' 
          ELSE Isnull(a.DocVerifiedStatus,'') 
    END AS DocVerifiedStatus, 
    ISNULL(RejRemarks, '') AS RejRemarks, 
    ISNULL(KYCDocHdr_Fk, 0) AS KYCPk, 
    ISNULL(DocShrtDescr, '') AS DocShrtDescr 
FROM            
    loln_apprvldoc A WITH(NOLOCK) 
JOIN
    LGEN_DOCUMENTS B WITH(NOLOCK) ON A.Doc_FK = B.PK_ID 
LEFT OUTER JOIN 
    Lgen_KYCApprvlDoc c ON a.KYCDocHdr_Fk = c.PK_Id 
WHERE           
    A.PRPSLNO = 'KATHU1602080002' 
    AND ISNULL(A.DocStat, '') = 'R' 
    AND ISNULL(A.DocVerifiedStatus, '') IN ('Rejection', '', 'null') 
    AND CASE 
           WHEN Isnull(c.DocVerifiedStatus, '') = 'A' 
              THEN c.Pk_id IS NOT NULL
              ELSE c.Pk_id IS NULL
        END

大小写不属于WHERE子句。将该CASE子句替换为

(
  (Isnull(c.DocVerifiedStatus,'')='A' AND c.Pk_id IS NOT NULL)
OR
  (Isnull(c.DocVerifiedStatus,'')<>'A' AND c.Pk_id IS NULL)
)
(
(Isnull(c.DocVerifiedStatus,)='A'和c.Pk_id不为NULL)
或
(Isnull(c.DocVerifiedStatus、)'A'和c.Pk_id为NULL)
)

CASE
是一个表达式(如
a+b
),它返回一个单一的原子值-它不能用于有条件地从SQL语句中包含/排除SQL片段