2

名前の最初の数文字が同じテーブルがたくさんありますが、テーブルには名前の最後に乱数 (長さが等しい) があります。

それらは同じ構造を持っています。

それらを動的に1つのテーブルに結合したい。

これは SQL Server 2008 Express にあります。

これを行う方法がわかりませんが、おそらくシステムテーブルのリストを使用して、テーブル名のリストをループする必要があると思いますか?

例(これは私の単純な考え方を示しています。これは実際には技術的な意味をなさないと確信しています)

SELECT * FROM TABLE0*
UNION ALL
SELECT * FROM TABLE0*

注 「*」は 8 桁の数字です。

4

2 に答える 2

3

簡単な動的 SQL スクリプトでそれを行う必要があります。

declare @sql varchar(max)
set @sql = ''

select @sql = @sql + case len(@sql) when 0 then '' else ' UNION ALL ' end + '
    SELECT * FROM [' + table_name + ']'
from
    information_schema.tables where table_name like 'TABLE0%'

exec (@sql)
于 2013-11-08T16:27:12.760 に答える
1

次のような単純なクエリを使用して、大きなクエリを作成できます。

SELECT 'SELECT * FROM '+name+ ' UNION '
FROM sys.tables
WHERE name LIKE '%yourtable%'

または、動的 SQL を使用してビルドして実行することもできます。

DECLARE @sql VARCHAR(MAX)
SET @sql = ''
SELECT @sql = @sql +'
    UNION ALL
    SELECT * FROM ['+name+']'
FROM sys.tables
WHERE name LIKE '%yourtable%'
SET @sql = STUFF(@sql,1,15,'')
EXEC(@sql)
于 2013-11-08T16:25:42.077 に答える