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

10 浏览
0 Comments

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

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

例如:

abc_History
bcd_History
123_History

我该如何找到所有以_History结尾的表格?

类似于这样:

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

但是出现了错误:

错误:无效列名 'table_name'。

0
0 Comments

问题的出现原因:出现这个问题的原因是为了找到所有表名以特定后缀结尾的表。

解决方法:使用以下查询语句可以获取所有表名以及对应的所有列名:

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']);

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

0
0 Comments

在某些情况下,我们可能需要查找数据库中以特定后缀结尾的表。这种需求可能出现在以下情况下:我们想要查找所有历史记录表,或者我们想要查找所有以某种特定方式命名的表。

为了解决这个问题,我们可以使用SQL查询语句来查找满足条件的表。下面给出了两种常见的查询方法:

方法1(使用INFORMATION_SCHEMA):

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

方法2(使用sys.tables):

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

这两种方法都使用了类似的查询条件,即表名以"_History"结尾。在方法1中,我们使用了INFORMATION_SCHEMA.tables视图来获取表名,并使用LIKE运算符来匹配以特定后缀结尾的表名。在方法2中,我们使用了sys.tables系统视图来获取表名,并使用LIKE运算符来匹配以特定后缀结尾的表名。

在方法1中,我们还添加了DISTINCT关键字,以去除重复的表名。这是因为INFORMATION_SCHEMA.tables视图中可能会包含多个模式(schema)中的表。

需要注意的是,在Oracle数据库中,我们需要使用ALL_TABLES或ALL_ALL_TABLES视图来执行类似的操作。

通过使用上述SQL查询语句,我们可以轻松地找到数据库中以特定后缀结尾的表。无论是在MySQL、SQL Server还是Oracle等数据库中,我们都可以根据具体的情况选择适合的查询方法来解决这个问题。

0