随笔 - 11  文章 - 0  评论 - 28  阅读 - 18043

ms sql 获取表字段的属性

SELECT
    表名       = case when a.colorder=1 then d.name else '' end,
   
    字段名     = a.name,
    主键       = case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=a.id and name in (
                     SELECT name FROM sysindexes WHERE indid in(
                        SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid))) then '√' else '' end,
    类型       = b.name,
    占用字节数 = a.length,
    长度       = COLUMNPROPERTY(a.id,a.name,'PRECISION'),
    默认值     = isnull(e.text,'')
   
FROM
    syscolumns a
left join
    systypes b
on
    a.xusertype=b.xusertype
inner join
    sysobjects d
on
    a.id=d.id  and d.xtype='U' and  d.name<>'dtproperties'
left join
    syscomments e
on
    a.cdefault=e.id

where
    d.name='TableName'    --如果只查询指定表,加上此条件

-------------------------------------------------------------------
SELECT

(case when a.colorder=1 then d.name else '' end) N'Table Name',

a.colorder N'Column SQ',

a.name N'Column Name',

(case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end) N'Idnetity FG',

(case when (SELECT count(*)

FROM sysobjects

WHERE (name in

            (SELECT name

           FROM sysindexes

           WHERE (id = a.id) AND (indid in

                     (SELECT indid

                    FROM sysindexkeys

                    WHERE (id = a.id) AND (colid in

                              (SELECT colid

                             FROM syscolumns

                             WHERE (id = a.id) AND (name = a.name))))))) AND

         (xtype = 'PK'))>0 then '√' else '' end) N'PK',

b.name N'Type',

a.length N'Bit Length',

COLUMNPROPERTY(a.id,a.name,'PRECISION') as N'Length',

isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as N'DataScale',

(case when a.isnullable=1 then '√'else '' end) N'Null',

isnull(e.text,'') N'Default'

FROM   syscolumns   a left join systypes b

on   a.xtype=b.xusertype

inner join sysobjects d

on a.id=d.id   and   d.xtype='U' and   d.name<>'dtproperties'

left join syscomments e

on a.cdefault=e.id
--where d.name = 'tablename --如果只查询指定表,加上此条件
order by object_name(a.id),a.colorder

posted on   梦回西夏  阅读(546)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
< 2010年1月 >
27 28 29 30 31 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 1 2 3 4 5 6

点击右上角即可分享
微信分享提示