在所有数据库中查找列

时间:2012-10-03 14:06:25

标签: mysql sql

如果我有一个数据库some_database,其中包含多个表:

table_one
table_two
table_three

,其中

table_oneCPV_one

table_twoCPV_two

table_threeCPV_three

我需要查找所有包含'%CPV%'

列的表格

这可以通过sql查询来完成吗?我想避免逐一检查所有表格。

4 个答案:

答案 0 :(得分:9)

您可以查询information_schema以获取数据库中每个表的列表,其中包含匹配的列名称:

SELECT
    TABLE_NAME, COLUMN_NAME

FROM
    information_schema.COLUMNS

WHERE
    TABLE_SCHEMA = 'SOME_DATABASE'
    AND COLUMN_NAME LIKE '%CPV%'

编辑(仅选择TABLE_NAME列)
正如评论中所指出的,如果您只想选择表的名称(没有匹配的列的列表),您还应该使用DISTINCT关键字 - 否则将返回相同的重复行匹配的每列的表格:

SELECT
    DISTINCT TABLE_NAME
FROM
    information_schema.COLUMNS
WHERE
    TABLE_SCHEMA = 'SOME_DATABASE'
    AND COLUMN_NAME LIKE '%CPV%'

答案 1 :(得分:0)

这里有代码来获取具有所需条件的表名:

SELECT DISTINCT TABLE_NAME
  FROM information_schema.Columns
 WHERE COLUMN_NAME LIKE '%CPV%';

有关 INFORMATION SCHEMA take a look here

的详细信息

COLUMNS table here

答案 2 :(得分:0)

    SELECT DISTINCT TABLE_NAME 
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME LIKE '%CPV%'
        AND TABLE_SCHEMA='YourDatabase';

答案 3 :(得分:0)

如何查询MySQL information_schema?

SELECT TABLE_NAME
  FROM information_schema.COLUMNS
 WHERE COLUMN_NAME LIKE '%CPV%'