Мне нужно написать синтаксический анализатор логической логики, который переведет язык логической логики в предложение SQL WHERE.
Порядок операндов всегда будет в правильном порядке (со значением справа).
Вот сравнительно простой пример. Могут быть вложенные скобки и использование операторов NOT и т. Д.
(CACOUNT=01 OR CACOUNT=02 OR CACOUNT=03)
AND Q4=1 AND NAME=TIMOTHY
Вот как будет выглядеть предложение WHERE.
WHERE (
EXISTS (
SELECT 1 FROM MyVerticalTable b
WHERE b.Key=a.Key AND b.Key='CACOUNT' AND b.Value='01'
)
OR EXISTS (
SELECT 1 FROM MyVerticalTable b
WHERE b.Key=a.Key AND b.Key='CACOUNT' AND b.Value='02'
)
OR EXISTS (
SELECT 1 FROM MyVerticalTable b
WHERE b.Key=a.Key AND b.Key='CACOUNT' AND b.Value='03'
)
)
AND EXISTS (
SELECT 1 FROM MyVerticalTable b
WHERE b.Key=a.Key AND b.Key='Q4' AND b.Value='1'
)
AND EXISTS (
SELECT 1 FROM MyVerticalTable b
WHERE b.Key=a.Key AND b.Key='NAME' AND b.Value='TIMOTHY'
)