В какой таблице содержатся эти данные + SQL - PullRequest
0 голосов
/ 11 февраля 2012

У меня есть база данных с 100 таблицами.Как я могу узнать, какая таблица содержит конкретный текст.

Например, какая таблица содержит текст «Предполагаемые претензии на жизнь»

Я могу дать подсказку, что это поле varchar

SQL SERVER 2008

1 Ответ

0 голосов
/ 11 февраля 2012

Предложение ypercube совершенно верно.Вот реализация:

DECLARE @searchText VARCHAR(100)
SET @searchText = 'Assumed Life Claims'

DECLARE @sqlText VARCHAR(8000)
DECLARE @MaxId INT
DECLARE @CurId INT
DECLARE @possibleColumns TABLE (Id INT IDENTITY(1, 1) NOT NULL PRIMARY KEY
                               ,sqlText VARCHAR(8000))
INSERT INTO @possibleColumns(sqlText)
SELECT 'IF EXISTS (SELECT * FROM ' + c.TABLE_NAME + ' WHERE ' + c.COLUMN_NAME + ' = ''' + @searchText + ''') PRINT '' searchText=' + @searchText + ' was found in ' + c.TABLE_NAME + '.' + c.COLUMN_NAME + ''''
  FROM INFORMATION_SCHEMA.COLUMNS c
    -- Using hint that this field is a varchar
 WHERE c.DATA_TYPE = 'varchar'

SELECT @CurId = MIN(pc.Id)
       ,@MaxId = MAX(pc.Id)
  FROM @possibleColumns pc

WHILE (@CurId <= @MaxId)
BEGIN
    SELECT @sqlText = pc.sqlText
      FROM @possibleColumns pc
     WHERE pc.Id = @CurId

    -- For testing (uncomment)
    --PRINT @sqlText

    EXEC(@sqlText)

    -- Increment counter
    SET @CurId = @CurId + 1
END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...