@Nordman99

Как найти строку в БД, не зная названия таблицы и столбца?

База данных в MS SQL SERVER 2008, в ней точно известно содержимое некоторого поля-строки, но названия поля не знаю, в какой из таблиц также неизвестно. Возможно ли найти все записи во всех таблицах базы?
  • Вопрос задан
  • 1324 просмотра
Решения вопроса 1
tsklab
@tsklab Куратор тега SQL Server
Здесь отвечаю на вопросы.
DECLARE @L VARCHAR(100) = '%Mars%'
DECLARE @TB VARCHAR(100), @CL VARCHAR(100), @Q NVARCHAR(250)
DECLARE @R TABLE ( TableField VARCHAR(100), FieldValue VARCHAR(250) )
DECLARE AllTable CURSOR FOR
SELECT TABLE_NAME, COLUMN_NAME 
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE DATA_TYPE LIKE '%char'
OPEN AllTable
FETCH NEXT FROM AllTable INTO @TB, @CL
WHILE @@FETCH_STATUS = 0 BEGIN
  SET @Q = 'SELECT ''' + @TB + '.' + @CL + ''', ' + @CL 
         + ' FROM ' + @TB + ' WHERE ' + @CL + ' LIKE ''' + @L + ''''
  INSERT @R EXECUTE sp_executesql @Q
  FETCH NEXT FROM AllTable INTO @TB, @CL
END
CLOSE AllTable
DEALLOCATE AllTable
SELECT * FROM @R
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@d-stream
Готовые решения - не подаю, но...
Этого хватит для генерации динамического sql:
select  column_id, name, system_type_id, max_length  from sys.columns where object_id = OBJECT_ID('имя_таблицы')
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы