MSSQL 经典语句查看表字典结构语句

--废话不多说,直接上干,先按照下面的语句创建一个 名为:prc_TableField 的存储过程

/****** Object:  StoredProcedure [dbo].[prc_TableFieldDesc]    Script Date: 02/26/2021 15:55:49 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--快速查看表结构     
 create proc [dbo].[prc_TableField]    
 @enTableName nvarchar(500),    
 @cnFieldName nvarchar(500),
 @enFieldName nvarchar(500)
as    
 begin     
 SELECT  CASE WHEN col.colorder = 1 THEN obj.name      
       ELSE  obj.name       
     END AS 表名,      
   col.colorder AS 序号 ,      
   col.name AS 列名 ,      
   ISNULL(ep.[value], '') AS 列说明 ,      
   t.name AS 数据类型 ,      
   col.length AS 长度 ,      
   ISNULL(COLUMNPROPERTY(col.id, col.name, 'Scale'), 0) AS 小数位数 ,      
   CASE WHEN COLUMNPROPERTY(col.id, col.name, 'IsIdentity') = 1 THEN ''      
     ELSE ''      
   END AS 标识 ,      
   CASE WHEN EXISTS ( SELECT   1      
          FROM     dbo.sysindexes si      
          INNER JOIN dbo.sysindexkeys sik ON si.id = sik.id      
                  AND si.indid = sik.indid      
          INNER JOIN dbo.syscolumns sc ON sc.id = sik.id      
                  AND sc.colid = sik.colid      
          INNER JOIN dbo.sysobjects so ON so.name = si.name      
                  AND so.xtype = 'PK'      
          WHERE    sc.id = col.id      
          AND sc.colid = col.colid ) THEN ''      
     ELSE ''      
   END AS 主键 ,      
   CASE WHEN col.isnullable = 1 THEN ''      
     ELSE ''      
   END AS 允许空 ,      
   ISNULL(comm.text, '') AS 默认值      
 FROM    dbo.syscolumns col      
   LEFT  JOIN dbo.systypes t ON col.xtype = t.xusertype      
   inner JOIN dbo.sysobjects obj ON col.id = obj.id      
            AND obj.xtype = 'U'      
            AND obj.status >= 0      
   LEFT  JOIN dbo.syscomments comm ON col.cdefault = comm.id      
   LEFT  JOIN sys.extended_properties ep ON col.id = ep.major_id      
                AND col.colid = ep.minor_id      
                AND ep.name = 'MS_Description'      
   LEFT  JOIN sys.extended_properties epTwo ON obj.id = epTwo.major_id      
                AND epTwo.minor_id = 0      
                AND epTwo.name = 'MS_Description'      
 WHERE   obj.name like '%'+@enTableName+'%'  and convert(nvarchar(500),ISNULL(ep.[value], '') )like '%'+@cnFieldName+'%'   
 and convert(nvarchar(500),ISNULL( col.name , '') )like '%'+@enFieldName+'%'    
 ORDER BY obj.name,col.colorder ;      
End

--然后 直行如上查询的

DECLARE    @return_value int

EXEC    @return_value = [dbo].[prc_TableField]
        @enTableName = N'sys_base_user',--表名
        @cnFieldName = '',
        @enFieldName = ''

SELECT    'Return Value' = @return_value
原文地址:https://www.cnblogs.com/davidchild/p/14616996.html