SqlText

Объект для хранения текста sql и манипуляций с ним.

Заменяемые части sql

select

Часть текста sql между select и from. Для сложных sql, где и select и from может встречаться много раз, слова помечаются коментарием /**/, который ставится до select или from:

select * from aaa where 0=0 order by id

/**/select * /**/from aaa where 0=0 and (b in select a from c) order by id

Используется для подмены или дополнения списка полей. Например, для запроса общего количества записей можно заменить поля в select на count(*) as cnt.

where

Место вставки условия фильтрации. Автоматически выявляется по наличию слова where в тексте запроса, после которого и вставляется условие фильтрации.

Если в тексте sql несколько where, то нужный помечается коментарием /**/ до where.

Если в тексте sql имеется несколько where, в которых нужно разместить условия фильтрации, то место вставки помечается коментарием /*where:name*/, где name - имя where. Коментарий /*where*/ эквивалентен /*where:default*/.

Существующие условия фильтрации дополняются новымы через and.

select * from aaa where 0=0 order by id

select * from aaa /**/where 0=0 order by id

select * from aaa where 0=0 /*where*/ order by id

select * from aaa where 0=0 /*where:default*/ order by id

select * from aaa /**/where 0=0 and (b in select a from c where c=1 /*where:w1*/) order by id

order by

Место вставки сортировки. Автоматически выявляется по фразе order by. Если в тексте sql несколько операторов order by, то нужный помечается коментарием /**/. Текст order by рассматривается до конца текста sql либо до коментария /*end*/:

select * from aaa where 0=0 order by id

select * from aaa where 0=0 and
(b in select a from c where c=1 order by a)
/**/order by tab/*end*/ group by id

Используется для подмены сортировки или ее исключения.

part

Место вставки произвольного фрагмента sql. Текст вставляется после коментария /*part:XXX*/.

select * from aaa /*part:join1*/ where p1=1 /*part:where1*/