Если это - оракул тогда, можно сделать:
select decode(field,NULL,'NULL','NOT NULL'), count(*)
from table
group by decode(field,NULL,'NULL','NOT NULL');
я уверен, что другой DBS допускает подобный прием.
Я не уверен, что это лучше, чем то, что вы придумали, но вы можете использовать возможности регулярных выражений MySQL :
select * from my_table where field rlike 'apple|orange';
Кроме того, как уже упоминалось другими, вы можете использовать ] Возможности полнотекстового поиска MySQL (но только если вы используете механизм MyISAM).
Вам, вероятно, следует взглянуть на Полнотекстовую индексацию MySQL , если это то, что вы пытаетесь сделать.
Может быть, лучшим решением было бы использовать логический поиск по полнотекстовому индексу ?
РЕДАКТИРОВАТЬ: Я просмотрел его, и он поддерживает только подстановочные знаки в ] end слов:
ALTER TABLE table ADD FULLTEXT INDEX (field);
SELECT * FROM table WHERE MATCH (field)
AGAINST ('orange* apple*' IN BOOLEAN MODE);