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

时间:2014-01-09 06:34:46

标签: sql sql-server sql-server-2008 select information-schema

我在数据库中有数千个表。有些名称以_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'.

2 个答案:

答案 0 :(得分:18)

试试这个:

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

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

答案 1 :(得分: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']);

希望它能对您有所帮助。