SQL条件where,如果条件不满足则返回all

时间:2017-09-11 07:27:22

标签: sql tsql conditional where

我对SQL Conditional WhereConditional WHERE clause in SQL Server有类似的问题,除非条件不满足,我想返回所有行(好像没有WHERE子句)。

一种解决方案可能是执行以下操作。请注意,<ColLetter><ColValue>是字符串插入,其中<ColLetter>将是ColAColBColC或{{1}之一},NULL将是一个可以显示在其中一列中的值(如果<ColValue>NULL,则为<ColLetter>。)

SELECT ID, ColA, ColB, ColC
FROM MainTable t
WHERE (
  -- <ColLetter> is not null, corresponding to a column name in MainTable
  (ISNULL(<ColLetter>, 0) <> 0 AND t.<ColLetter> =  <ColValue>)
  OR
  -- <ColLetter> is null, I want to return all rows
  (ISNULL(<ColLetter>, 0) = 0 AND t.ID is not null)
  )

这个问题是它不必要地检查ID列的空值(不会有任何空值)并且它是一个大表。有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

where case <colLetter>
     when '<nameOfColA>' then nameOfColA
     when '<nameOfColB>' then nameOfColB
     When '<nameOfColC>' then nameOfColC
     else isNull(<colValue>, 0) end 
      = isNull(<colValue>, 0)        

答案 1 :(得分:0)

归结为

    import android.app.IntentService;
import android.content.Intent;

public class PhoneStateService extends IntentService {

    public PhoneStateService(String name) {
        super(name);
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        new PhoneStateHandler().onIncomingCallStarted(getApplicationContext());
    }
}