【发布时间】:2016-05-28 04:33:55
【问题描述】:
我想查找名称为“LOB”的列是否存在于数千个视图中。 架构名称:PACONE
任何帮助在这里表示赞赏。谢谢。
【问题讨论】:
我想查找名称为“LOB”的列是否存在于数千个视图中。 架构名称:PACONE
任何帮助在这里表示赞赏。谢谢。
【问题讨论】:
该解决方案将取决于您拥有的数据库服务器。
如果您有 Oracle,请转到 Search an Oracle database for tables with specific column names?
如果你有 mySQL,去How do i search a mysql database for a specific column name
如果您有 PostgreSQL,请转到 How to find a table having a specific column in postgresql
如果您有 SQL Server,这是一个可能的解决方案:
操作方法:在 SQL Server 数据库中查找字段或表
假设您需要找到一个名为 GLASS_ID 的字段,您只需运行以下代码:
-- 搜索某个字段名-- 选择 TABLE_NAME、COLUMN_NAME、DATA_TYPE、IS_NULLABLE FROM INFORMATION_SCHEMA.COLUMNS WHERE UPPER(COLUMN_NAME) = 'GLASS_ID'
同样,您可以查找所有以“CO”结尾的字段名称
-- 搜索以...结尾的字段名-- 选择 TABLE_NAME、COLUMN_NAME、DATA_TYPE、IS_NULLABLE FROM INFORMATION_SCHEMA.COLUMNS WHERE UPPER(COLUMN_NAME) LIKE '%CO'
当然,这应该可以在 SQL Server 下运行,并且仅在 SQL Server 2005 中进行了测试,但我想它也可以在任何最新版本中运行。
【讨论】:
use [your database name]
SELECT t.name AS table_name,
SCHEMA_NAME(schema_id) AS schema_name,
c.name AS column_name
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
WHERE c.name = 'LOB'
ORDER BY schema_name, table_name;
【讨论】:
首先你应该提供一些关于你的环境的信息。
如果您使用 Oracle,您可以使用 dab_view 查询 dba_tab_columns(也可以使用 user_ 或 all_),例如:
select a.view_name
from dba_views a
join dba_tab_columns b
on a.view_name = b.table_name
where lower(b.column_name) = 'lob'
and lower(b.owner) = <view_owner>;
【讨论】: