【问题标题】:SQL Query to lookup a column用于查找列的 SQL 查询
【发布时间】:2016-05-28 04:33:55
【问题描述】:

我想查找名称为“LOB”的列是否存在于数千个视图中。 架构名称:PACONE

任何帮助在这里表示赞赏。谢谢。

【问题讨论】:

    标签: sql views lookup


    【解决方案1】:

    该解决方案将取决于您拥有的数据库服务器。

    如果您有 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 中进行了测试,但我想它也可以在任何最新版本中运行。

    【讨论】:

      【解决方案2】:
       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;
      

      【讨论】:

      • 你能帮我插入变量吗,因为我在这里遇到错误;架构名称:PACONE 正在寻找的表有一个“LOB”列
      • 您使用的是哪个数据库服务器?我的解决方案适用于 Microsoft sql server。您应该将其添加到您的标签中
      【解决方案3】:

      首先你应该提供一些关于你的环境的信息。

      如果您使用 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>;
      

      【讨论】:

        猜你喜欢
        • 2017-01-14
        • 1970-01-01
        • 2011-07-29
        • 1970-01-01
        • 2021-02-09
        • 2011-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多