我对SQL Conditional Where和Conditional WHERE clause in SQL Server有类似的问题,除非条件不满足,我想返回所有行(好像没有WHERE子句)。
一种解决方案可能是执行以下操作。请注意,<ColLetter>
和<ColValue>
是字符串插入,其中<ColLetter>
将是ColA
,ColB
,ColC
或{{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列的空值(不会有任何空值)并且它是一个大表。有更好的方法吗?
答案 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());
}
}