Мне нужно мнение о разборе SQL (Oracle) с регулярным выражением.
В StackOverflow есть довольно занимательные посты, в которых объясняется, что регулярные выражения в HTML или XML бесперспективны ( пример ).
Так ли это и с SQL? И даже если ответ «нет», можно ли решить приведенную ниже конкретную проблему с помощью регулярных выражений? Последний запасной вариант, что еще будет работать?
Требование: убедитесь, что имена таблиц в произвольном SQL заключены в квадратные скобки (должно быть "[имя]").
Ограничение: используйте ksh / bash, то есть grep | sed | awk.
Для SQL ниже скрипт должен пометить bad_table как не соответствующий (должен был быть [bad_table]). Должен работать на произвольном SQL, здесь более простой без объединений.
SELECT id
FROM [order]
WHERE id IN (SELECT oid
FROM [audit] a, bad_table d, (SELECT xid FROM [t1]) r
WHERE a.data = r.data and a.data = d.data)