【问题标题】:How can I do the equivalent of "SHOW TABLES" in T-SQL?如何在 T-SQL 中执行相当于“SHOW TABLES”的操作?
【发布时间】:2010-09-12 13:24:13
【问题描述】:

我想根据表名在我的 SQL Server 2005 Express 数据库中查找表。在MySQL 中我会使用SHOW TABLES LIKE "Datasheet%",但在T-SQL 中这会引发错误(它会尝试查找SHOW 存储过程并失败)。

这可能吗?如果可以,怎么做?

【问题讨论】:

    标签: sql tsql sql-server-2005


    【解决方案1】:

    我知道你已经接受了答案,但为什么不直接使用更简单的sp_tables

    sp_tables 'Database_Name'
    

    【讨论】:

    • 这是一个更好的解决方案——我实际上可以记住它!谢谢
    • 这给出了所有的表,而不仅仅是用户表。非常有用,但这取决于对问题的解释(因为 OP 并没有具体说明他们是想要所有表格还是只想要他们自己的表格)
    【解决方案2】:

    这将为您提供当前数据库中的表列表:

    Select Table_name as "Table name"
    From Information_schema.Tables
    Where Table_type = 'BASE TABLE' and Objectproperty 
    (Object_id(Table_name), 'IsMsShipped') = 0
    

    其他一些有用的 T-SQL 位可以在这里找到:http://www.devx.com/tips/Tip/28529

    【讨论】:

    • 为什么这么复杂
    【解决方案3】:

    试试这个:

    USE your_database
    go
    Sp_tables
    go
    

    【讨论】:

      【解决方案4】:

      试试这个

      SELECT * FROM INFORMATION_SCHEMA.TABLES
      WHERE TABLE_NAME LIKE 'Datasheet%'
      

      【讨论】:

        【解决方案5】:

        试试这个:

        select * from information_schema.columns
        where table_name = 'yourTableName'
        

        同时寻找其他information_schema 视图。

        【讨论】:

          【解决方案6】:

          不知道 TABLE NAME 的人将无法根据上述答案获得结果。

          试试这个

          SELECT * FROM INFORMATION_SCHEMA.TABLES
          WHERE TABLE_SCHEMA='dbo'; 
          

          【讨论】:

            【解决方案7】:

            而且,由于 INFORMATION_SCHEMA is part of the SQL-92 standard,很多数据库都支持它 - 包括 MySQL

            【讨论】:

              【解决方案8】:

              尝试关注

              SELECT table_name
              FROM information_schema.tables
              WHERE
              table_name LIKE 'Datasheet%'
              

              【讨论】:

                【解决方案9】:

                试试看:

                SELECT * FROM INFORMATION_SCHEMA.TABLES
                WHERE TABLE_NAME LIKE '%'
                

                【讨论】:

                  【解决方案10】:

                  MS 正在逐步淘汰除information_schema 视图之外的方法。因此,为了向前兼容,请始终使用这些。

                  【讨论】:

                    【解决方案11】:

                    我知道这是一个老问题,但我刚刚遇到它。

                    通常我会说访问 information_schema.tables 视图,但在发现 PDO 无法从不同的数据对象访问该数据库时,我需要找到不同的方式。看起来sp_tables 'Database_Name 是使用非特权用户或 PDO 时更好的方法。

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 2021-07-19
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2015-01-19
                      • 2013-01-07
                      • 1970-01-01
                      • 2011-05-03
                      相关资源
                      最近更新 更多