Это может не охватить всех случаев, но вы можете обнаружить, что вы можете поймать большинство из них, просто найдя в выражении последний from
и последний where
.
ifwhere
следует после from
, тогда у него есть предложение where
.Если where
предшествует from
(или нет where
вообще), тогда не существует никакого предложения where
.
Иногда можно оставить ограничения или ограничения в вашем коде, до тех пор, пока они правильно задокументированы.
Например, я работал над проектом до того, как тот проанализировал SQL, и мы обнаружили, что он не обрабатывает такие вещи, как between
:
where recdate between '2010-01-01' and '2010-12-31'
Вместо того, чтобы тратить кучу денег на устранение проблемы (и, вероятно, вносить ошибки в пути), мы просто опубликовали это как ограничение и сказали всем, что они должны изменить его на:
where recdate >= '2010-01-01'
and recdate <= '2010-12-31'
Проблема решена.Хотя хорошо, чтобы клиенты были довольны, вам не нужно обслуживать каждый каприз: -)
Кроме этого, вам нужен анализатор SQL, а SQL - не красивый язык для разбора, поверьте мне.