【问题标题】:How can I get a list of tables in a database without a timestamp column?如何在没有时间戳列的情况下获取数据库中的表列表?
【发布时间】:2011-03-29 04:47:15
【问题描述】:

如何在没有时间戳列的情况下获取数据库中的表列表?

有什么建议吗?

【问题讨论】:

    标签: tsql sql-server-2000


    【解决方案1】:

    使用INFORMATION SCHEMA 视图:

    select * from INFORMATION_SCHEMA.TABLES T where NOT EXISTS 
      (
          select 1 
            from INFORMATION_SCHEMA.COLUMNS 
           where TABLE_CATALOG = T.TABLE_CATALOG
             and TABLE_SCHEMA = T.TABLE_SCHEMA
             and TABLE_NAME = T.TABLE_NAME
             and DATA_TYPE = 'timestamp' -- or the literal representing timestamp data type
      )
    

    【讨论】:

    • 由于我只要求表格,我添加了:和 TABLE_TYPE = 'BASE TABLE' 谢谢。
    【解决方案2】:

    使用 SYS.TABLES/SYS.COLUMNS:

    SELECT name FROM SYS.TABLES 
     WHERE object_id NOT IN (select object_id 
                               FROM SYS.COLUMNS
                              WHERE system_type_id = 189)
    

    【讨论】:

      【解决方案3】:

      你可以使用OBJECTPROPERTY

      SELECT
          name
      FROM
          sys.objects
      WHERE
          OBJECTPROPERTY(object_id, 'TableHasTimestamp') = 0 --null if not a table
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-10-06
        • 2020-10-13
        • 2018-09-16
        • 2018-10-21
        • 2021-05-29
        • 1970-01-01
        • 2014-07-21
        • 1970-01-01
        相关资源
        最近更新 更多