Поиск объектов по всей базе данных через INFORMATION_SCHEMA.COLUMNS - PullRequest
0 голосов
/ 07 мая 2019

Я хочу добавить еще один столбец с подзапросом COUNT (), используя имена таблиц и столбцов из TBL_A.TABLE_NAME и TBL_A.COLUMN_NAME соответственно, но подзапрос не принимает значение из TBL_A.TABLE_NAME в качестве допустимого объекта таблицы.

В настоящее время используется сервер MS SQL

SELECT TBL_A.TABLE_NAME
     , TBL_A.COLUMN_NAME
     , TBL_A.DATA_TYPE
     , (SELECT [TBL_A].[COLUMN_NAME] FROM [TBL_A].[TABLE_NAME] WHERE [TBL_A].[COLUMN_NAME] = 'Some Keyword')
FROM INFORMATION_SCHEMA.COLUMNS AS TBL_A;

Я хочу проверить, присутствует ли введенное мной ключевое слово в указанном tablename.columnname в INFORMATION_SCHEMA (например, COUNT> 0, таким образом, присутствует)

1 Ответ

0 голосов
/ 07 мая 2019

Попробуйте этот подход.
Примечание: Поддерживается в SQL Server (начиная с 2008 года).

Используется предложение SELECT - OVER и ищет столбцы, содержащие желаемое ключевое слово.

SELECT [TBL_A].[TABLE_SCHEMA]  
    , TBL_A.TABLE_NAME  
    , TBL_A.COLUMN_NAME  
    , COUNT(*) OVER(PARTITION BY [TBL_A].[TABLE_SCHEMA], [TBL_A].[TABLE_NAME])  
        AS [Count in Current Table]  
    , COUNT(*) OVER(PARTITION BY [TBL_A].[COLUMN_NAME])  
        AS [Count in Current Database]  
FROM INFORMATION_SCHEMA.COLUMNS AS TBL_A  
WHERE [TBL_A].[COLUMN_NAME] LIKE '%Some Keyword%';     
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...