Задавайте вопросы, мы ответим
Вы не зашли.
Доброго вечера!
Интересно, имеется ли какая-нибудь библиотека, которая содержит функции по анализу SQL-запросов? Например, вот имеется запрос SELECT ... FROM ... WHERE ...; и мне необходимо знать только то, что стоит после SELECT, после FROM или после WHERE. Для этого было бы здорово вызвать функцию, которая возвращала бы, необходимые куски из запроса. Безусловно, это можно и самому сделать, но, возможно, есть уже что-либо готовое.
Спасибо.
Неактивен
Описанное действие можно сделать самому, но трудности возникают для сложных запросов (JOIN, подзапросы, UNION). Готовый анализатор мне неизвестен.
Неактивен
У меня еще такой вопрос. Мне необходимо проверить, синтаксически правильно ли построен SQL-запрос. Я бы хотел создать собственное приложение для выполнения данной задачи. Какие библиотеки или модули дистрибутива СУБД MySQL я должен применить для достижения цели? Спасибо.
Неактивен
Готового решения нет, поэтому придется копаться в исходниках MySQL. И еще, запрос может быть правильным или неправильным в зависимости от структуры таблиц
Неактивен
rgbeast написал:
Готового решения нет, поэтому придется копаться в исходниках MySQL. И еще, запрос может быть правильным или неправильным в зависимости от структуры таблиц
Языку SQL столько лет! Неужели не существует модулей, которые могли бы проводить синтаксический и семантический анализ SQL-запросов?! Сложно в это верится.
Неактивен
Синтаксис SQL в каждой БД свой. Стандарт ANSI SQL есть, но он регламентирует не все и поддерживается изготовителями СУБД достаточно творчески
Неактивен
В MySQL Tools for 5.0 имеется libmysqlsqlparser.dll. Наверняка там есть методы (функции) хотя бы для синтаксического анализа SQL. Может, кто-либо использовал? Не поделитесь опытом?
Неактивен
Видимо, нужно исходный код MySQL посмотреть
Неактивен
rgbeast написал:
Готового решения нет, поэтому придется копаться в исходниках MySQL. И еще, запрос может быть правильным или неправильным в зависимости от структуры таблиц
Отредактированно believer (08.12.2009 20:04:58)
Неактивен