Как я могу получить все имена таблиц, где столбец, как «column_name». Подвох в том, что я хочу только таблицу, которая имеет определенное значение в столбце - PullRequest
0 голосов
/ 16 января 2019

Понятия не имею, есть ли способ сделать запрос к такой базе данных. Но в основном у меня есть имя столбца с именем = 'columnID' приблизительно в 100 таблицах в моей базе данных.

Я могу получить все имена таблиц с помощью этого запроса:

SELECT c.name AS ColName, t.name AS TableName
FROM sys.columns c
JOIN sys.tables t ON c.object_id = t.object_id
WHERE c.name LIKE '%columnID%';

Но что, если у меня есть конкретное значение, которое я ищу, что-то вроде columnID = 11074.

Можно ли как-нибудь получить имя таблицы, если есть хотя бы одна строка данных с columnID = 11074? Я знаю, что это выстрел в темноте. Ищу друга здесь. Спасибо.

1 Ответ

0 голосов
/ 16 января 2019

Вот немного, чтобы начать в правильном направлении.

WITH cteColumns AS (
    SELECT c.name AS ColName, t.name AS TableName, s.name AS SchemaName
    FROM sys.columns c
    JOIN sys.tables t ON c.object_id = t.object_id
    JOIN sys.schemas s on t.schema_id = s.schema_id
    WHERE c.name LIKE '%columnnID%'
)
SELECT 'SELECT * FROM ' 
       + QUOTENAME(c.SchemaName) + '.' + QUOTENAME(c.TableName)
       + ' WHERE ' + QUOTENAME(c.ColName) + ' = 11074'
    FROM cteColumns c;

Затем вы можете динамически выполнить эти результаты или скопировать / вставить в SSMS, в зависимости от ваших потребностей.

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