Так что, если вы используете SQL Server, то вы можете запустить, чтобы найти все столбцы во всех таблицах.
select
'SELECT * FROM '
+ st.name +
' WHERE ' +
sc.name + ' = ''MICROSOFT'' '
from sys.tables st join sys.columns sc on st.object_id = sc.object_id
Используя вывод этого запроса вы создаете список всех возможных комбинаций ВЫБИРАЕТ для каждого столбца в каждой таблице.
Это просто выводит список всех команд, теперь вы должны их выполнить. Чтобы выполнить каждую команду, вам нужно создать курсор, который перейдет весь список результатов.
Вы собираетесь окружить предыдущий оператор SELECT
курсором, чтобы просмотреть каждый запрос и выполнить его. Таким образом, код становится чем-то вроде этого
DECLARE @myCommand VARCHAR(1000)
DECLARE c CURSOR READ_ONLY FAST_FORWARD FOR
select
'SELECT * FROM '
+ st.name +
' WHERE ' +
sc.name + ' = ''MICROSOFT'' '
from sys.tables st join sys.columns sc on st.object_id = sc.object_id
OPEN c
FETCH NEXT FROM c INTO @myCommand
WHILE @@FETCH_STATUS = 0
BEGIN
sp_executesql @myCommand
FETCH NEXT FROM c INTO @myCommand
END
CLOSE c
DEALLOCATE c
это возможность экспортировать база данных в sql-файл, а затем просто grep для этой строки? –
Нет. Мне нужен запрос, который дает мне все имена столбцов во всей базе данных, которая имеет значение MICROSOFT –
, тогда это может быть вопрос, связанный с базой данных, потому что, если я не ошибаюсь, вам нужно сначала запросить схему базы данных чтобы получить все имена таблиц, затем запросить схему каждой таблицы, получить все имена столбцов, а затем создать конкретный запрос для такой таблицы. –