Проверьте, существует ли значение в любой таблице SQL

#sql

#sql

Вопрос:

Есть ли способ проверить, существует ли значение в любой таблице или столбце в схеме, не зная заранее, где именно?

Единственное, что я знаю, это выполнить select с предложением where, указав столбец атрибута. Возможно, каким-то образом с данными схемы, или если значение проиндексировано?

Комментарии:

1. краткий ответ: вы не должны этого делать. не смешивайте структуру и данные. (information_schema позволяет вам использовать структурную информацию в качестве данных, обратное невозможно и не должно быть. — в какой-то странной базе данных может быть какая-то специальная функция базы данных, которая делает это. хранилища ключей-значений могут быть тем, что вы ищете, или каким-то материалом для поиска solr, но это не имеет ничего общего с sql)

2. Вы должны указать используемую вами СУБД

3. Я использую Mysql и Oracle

Ответ №1:

это возможно сделать, но не рекомендуется. С одной стороны, вы будете блокировать каждую таблицу в базе данных своим «запросом», а с другой стороны, вам нужно выполнить запросы [NumberOfTablesInSchema] X [NumberOfColumnsPerTable], чтобы выполнить это.

Что вам нужно сделать, это:

  • запросите information_schema для всех таблиц и сохраните их в переменной
  • проведите цикл по каждой таблице с помощью курсора (сравнимо с циклом foreach)
    • запросите information_schema для всех столбцов в этой таблице и сохраните их в переменной
    • проведите цикл по каждому столбцу с помощью курсора (сравнимо с циклом foreach)
    • создайте динамическую инструкцию sql, которая запрашивает таблицу x на предмет наличия значения в столбце y
    • выполните инструкцию и сохраните результат в таблице или распечатайте его (таблица x содержит значение в столбце y 5 раз)

вы можете видеть, что для достижения этой «функциональности» необходимо выполнить значительный объем работы