查找所有表名以特定后缀结尾的表

23

我有成千上万张数据库表。一些表名以_History结尾。

例如:

abc_History
bcd_History
123_History

我如何查找所有表名以_History结尾的表。

类似这样:

SELECT
table_name
FROM sys.tables WHERE table_name LIKE '_History%'

并且

error : Invalid column name 'table_name'.

问号应该在%_History之前。 - Darka
https://dev59.com/Am865IYBdhLWcg3wQMID - slavoo
2个回答

37

试一试:

SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.tables 
WHERE TABLE_NAME LIKE '%_History'

或者

SELECT name
FROM sys.tables
WHERE name LIKE '%_History'

2
我添加了DISTINCT,因为TABLE_NAME中有重复项。 - Matthew
在Oracle中,是FROM ALL_TABLES或ALL_ALL_TABLES。只是想帮忙一下。 - phoenixSid

0

感谢 @Saharsh-shah。

要在同一查询中获取所有列名的表名,请使用以下代码:

SELECT 
    `TABLE_NAME`,
    group_concat(`COLUMN_NAME` separator ',') AS `COLUMNS`
FROM `INFORMATION_SCHEMA`.`COLUMNS`
WHERE `TABLE_NAME` IN(
    SELECT TABLE_NAME
        FROM INFORMATION_SCHEMA.tables 
        WHERE `TABLE_NAME` LIKE '%_History'
    )
GROUP BY `TABLE_NAME`

你可以使用以下方法非常简单地将其推入多维 PHP 数组中:

$tables['columns'] = explode(',', $tables['columns']);

希望能够对一些人有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接