当某些事情是真的时,有没有办法忽略CASE中的AND?

chr*_*ark 1 sql t-sql sql-server case

我有这个Where条款

Select * From Student_Info si
Inner Join Certifications cc
Inner Join Cert_Earned ce

Where si.grad_date = @grad_date
AND cc.org_no = @org_no
Run Code Online (Sandbox Code Playgroud)

但是我需要一个额外的AND,如果结果是值为false,我应该忽略所有证书

AND cc.industrial = CASE WHEN @industrial = 0 THEN Do Nothing
                     Else @industrial
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 8

这通常表示为:

AND (@industrial = 0 OR ccc.industrial = @industrial)
Run Code Online (Sandbox Code Playgroud)

  • @christopherclark这正是该条款的作用.如果它是'0`,它将评估为'true`.如果它不是'0`,它会评估`ccc.industrial`是否等于该值,然后才会是'true`. (3认同)