首页 > 解决方案 > 如何合并数据库中名称中以相同字符结尾的多个表?

问题描述

我试图在我的数据库中合并 30 多个表而不列出它们。它们都以名称中相同的最后四个字符结尾。

我已经尝试将它们全部列出,但需要一种更有效的方法来识别所有以四个字符结尾的表。我试过寻找一种方法来搜索表的名称。

select * from [dbo].[AL2019CLFC]
  union
  select * from [dbo].[AR2019CLFC]
  union 
  select * from [dbo].[AZ2019CLFC]

......

我希望有一种方法可以从所有表中识别最后四个字符“CLFC”并将它们联合起来。

标签: sqlunionunion-all

解决方案


我建议从系统表列表中查询并构建您的 sql 语句。然后将结果复制回您的查询窗口。从技术上讲,您可以创建一个存储过程来构建一个字符串,然后运行 ​​executesql 来获取结果。

注意:下面的示例将给出一个尾随的 UNION 关键字,应将其删除。同样,如果你想变得更漂亮,你可以在它周围使用 sql,但希望这足以让你继续前进。

微软 SQL 服务器:

select 
'SELECT * FROM ' + name + ' UNION ' query
from sys.tables
where name like '%CLFC'

甲骨文:

select 
'SELECT * FROM ' || table_name || ' UNION ' query
from user_tables
where table_name like '%CLFC'

推荐阅读