Я создал API-шлюз, который будет принимать оператор SQL, запускать оператор для базы данных и возвращать его результат в качестве ответа. Для каждого оператора SQL, который я получаю в качестве входных данных, я должен добавить условие WHERE в SQL. Например: -
Ввод SQL - ВЫБРАТЬ * ИЗ КОНТАКТОВ, ГДЕ last_name = 'Johnson';
Добавить условие- страна = ' Индия '
Новый SQL - ВЫБРАТЬ * ИЗ КОНТАКТОВ, ГДЕ last_name =' Джонсон 'И (страна =' Индия ');
Для вышеупомянутых SQL было легко найти ключевое слово WHERE и его состояние, как оно было в конце. Но для некоторых SQL у нас может быть OFFSET, HAVING, ORDER BY, GROUP BY, FETCH NEXT и многие другие после WHERE. Таким образом, невозможно найти надежный способ выяснить условие WHERE и добавить к нему.
Возможное использование WHERE приведено ниже -
SELECT * // Condition With Spaces
FROM contacts
WHERE last_name = 'Johnson';
SELECT * // Condition Without Spaces
FROM contacts
WHERE last_name='Johnson';
SELECT * // Multiple Conditions
FROM suppliers
WHERE ((state = 'Florida' AND supplier_name = 'IBM')
OR (supplier_id > 5000)) AND
SELECT email FROM emailTable // WHERE With OFFSET
WHERE user_id=3
ORDER BY Id
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY;
SELECT column_name(s) // WHERE With GROUP BY, HAVING, ORDER BY
FROM table_name
WHERE condition
GROUP BY column_name(s)
HAVING condition
ORDER BY column_name(s);
Один подход будет быть в списке всех ключевых слов, которые идут после WHERE
, чтобы найти его условие. Но я хочу проверить, есть ли лучший подход для этого. Любые предложения или документы будут оценены.