如何列出GDBADMP/USCH1060模式下含PLZ_ID列的所有表?
查找包含指定列名的表的正确方法
你之前的SQL语句是试图查询表中的数据,无法实现查找包含PLZ_ID列的表的需求。要完成这个任务,需要查询数据库的系统元数据(数据字典),这类视图存储了所有表、列的结构信息。
以下是主流数据库对应的实现语句:
Oracle
Oracle中可通过all_tab_columns视图查询列信息,注意Oracle没有单独的int类型,通常用NUMBER(或INTEGER)实现整数类型:
SELECT owner, table_name, data_type FROM all_tab_columns WHERE column_name = 'PLZ_ID' AND owner IN ('GDBADMP', 'USCH1060') AND data_type IN ('VARCHAR2', 'NUMBER', 'INTEGER') ORDER BY owner, table_name;
SQL Server
使用INFORMATION_SCHEMA.COLUMNS系统视图:
SELECT TABLE_SCHEMA, TABLE_NAME, DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = 'PLZ_ID' AND TABLE_SCHEMA IN ('GDBADMP', 'USCH1060') AND DATA_TYPE IN ('varchar', 'int') ORDER BY TABLE_SCHEMA, TABLE_NAME;
MySQL
同样基于information_schema.columns表:
SELECT table_schema, table_name, data_type FROM information_schema.columns WHERE column_name = 'PLZ_ID' AND table_schema IN ('GDBADMP', 'USCH1060') AND data_type IN ('varchar', 'int') ORDER BY table_schema, table_name;
这些语句会返回符合条件的模式名、表名及对应列的数据类型,帮你快速定位目标表。
内容的提问来源于stack exchange,提问作者Stephan
相关产品推荐
相关产品推荐

