Поиск определенного значения столбца - PullRequest
1 голос
/ 19 августа 2011

Я хочу запросить определенное значение, скажем «AYX» в некотором конкретном столбце некоторой конкретной таблицы в базе данных. Мне нужно получить список таблиц и столбцов, в основном имеющих значение как «AYX».пойти на это? Возможно ли это?Я использую SQL SERVER 2008

Ответы [ 3 ]

3 голосов
/ 19 августа 2011
DECLARE @string NVARCHAR(32) = N'AYX';


CREATE TABLE #results
(
    [column] NVARCHAR(768), 
    [value] NVARCHAR(MAX)
);

DECLARE @sql NVARCHAR(MAX) = N'';

SELECT @sql += 'SELECT ''' 
    +  QUOTENAME(OBJECT_SCHEMA_NAME([object_id])) 
    + '.' + QUOTENAME(OBJECT_NAME([object_id])) 
    + '.' + QUOTENAME(name) + ''', ' + QUOTENAME(name) + ' FROM ' 
    + QUOTENAME(OBJECT_SCHEMA_NAME([object_id])) 
    + '.' + QUOTENAME(OBJECT_NAME([object_id])) 
    + ' WHERE ' + QUOTENAME(name) + ' LIKE ''%' + @string + '%'';
    '
FROM sys.columns 
WHERE system_type_id IN (35, 99, 167, 175, 231, 239)
AND OBJECTPROPERTY([object_id], 'IsMsShipped') = 0;

INSERT #results EXEC sp_executesql @sql;

SELECT [column],[value] FROM #results;

DROP TABLE #results;
1 голос
/ 20 августа 2011

@ У Аарона Бертранда был очень хороший сценарий.

Я просто хочу отметить, что есть бесплатный инструмент SSMS Tools Pack, который может искать данные во всех таблицах / представлениях.* Пакет инструментов SSMS

0 голосов
/ 19 августа 2011

Вам нужно будет использовать динамический запрос, сгенерированный кодом.

Взгляните на SELECT * FROM INFORMATION_SCHEMA.COLUMNS, чтобы получить список столбцов в базе данных.

Ограничьте соответствующие типы данных с помощьюПредложение WHERE для этой таблицы / представления.

Код генерирует запросы для поиска: SELECT '{TABLE_NAME}' AS TABLE_NAME, '{COLUMN_NAME}' AS COLUMN_NAME, COUNT(*) AS ROW_COUNT FROM {TABLE_NAME} WHERE {COLUMN_NAME} LIKE '%{SEARCH}%'

UNION ALL результирующие запросы вместе (добавьте WHERE ROW_COUNT <> 0 к внешнему запросу)

...