Запустите запрос на выборку из нескольких таблиц с похожими именами, такими как t103042020, t102042020, t101042020 et c.? - PullRequest
0 голосов
/ 06 апреля 2020

Как выполнить запрос на выборку из нескольких таблиц с похожими именами, например t103042020, t102042020, t101042020 и т. Д. c.?

У меня есть несколько таблиц t103042020, t102042020, t101042020, t112042019, t111042019, t110042019. Я хочу объединить содержимое этих таблиц без использования Union или Union all.

У меня есть пример, который я использовал:

select * from t103042020
Union
select * from t102042020
Union
select * from t101042020
Union
select * from t112042019
Union
select * from t111042019
Union
select * from t110042019

Я хочу выполнить запрос без использования Union или Объедините все, возможно, используя регулярное выражение для чтения похожих имен таблиц с именем типа «% T1%». Есть ли способ сделать это, кроме union или union all ?

1 Ответ

1 голос
/ 06 апреля 2020

Попробуйте это:

DECLARE @DynamicTSQL NVARCHAR(MAX);

SELECT @DynamicTSQL = STUFF
(
    (
        SELECT ' UNION SELECT * FROM ' + QUOTENAME(SCHEMA_NAME([schema_id])) + '.' + QUOTENAME([name])
        FROM [sys].[tables]
        WHERE [name] LIKE 't10%'
            OR [name] LIKE 't111%'
        FOR XML PATH(''), TYPE
    ).value('.', 'NVARCHAR(MAX)')
    ,1
    ,7
    ,''
);

EXEC sp_executesql @DynamicTSQL;
...