Цикл по именам столбцов набора результатов - PullRequest
0 голосов
/ 23 мая 2019

Я использую следующий запрос, чтобы вернуть все имена столбцов, принадлежащих таблицам в базе данных, которые похожи на имя%

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 'name%'

Теперь я хотел бы перебрать результирующий набор t.name и выполнить что-то вроде

Select * from t.name where c.name like 'abc%'

Как мне это сделать?

1 Ответ

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

Если я понимаю ваш вопрос, вам нужно сгенерировать и выполнить динамическое выражение:

-- Declarations
DECLARE @stm nvarchar(max) = N''

-- Dynamic statement
SELECT @stm = 
    @stm + CONCAT(
            N'SELECT * FROM ', 
            QUOTENAME(t.name), 
            N' WHERE ',
            QUOTENAME(c.name),
            N' LIKE ''abc%'';'
    )
FROM sys.columns c
JOIN sys.tables t ON c.object_id = t.object_id
WHERE c.name LIKE 'name%'

-- Print and execute statement
PRINT @stm
EXEC sp_executesql @stm
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...