sqlserver采集字段的sql语句

SELECT CAST
    ( o.name AS VARCHAR ( 1000 ) ) AS TABLE_NAME,
    CAST ( c.name AS VARCHAR ( 100 ) ) AS COLUMN_NAME,
    c.column_id AS ORDINAL_POSITION,
    c.PRECISION AS DECIMAL_PRECISION,
    c.SCALE AS NUMERIC_SCALE,
    SCHEMA_NAME( o.schema_id ) AS TABLE_SCHEMA,
    c.system_type_id AS SQL_DATA_TYPE,
    c.user_type_id    ,
    CAST ( TYPE_NAME( c.user_type_id ) AS VARCHAR ( 100 ) ) AS DATA_TYPE,
    case when c.IS_NULLABLE=0 then 'No' else 'Yes' end as IS_NULLABLE ,
CASE
            WHEN ( c.user_type_id>= 40 AND c.user_type_id<= 62 )
        OR c.user_type_id= 104
        OR c.user_type_id= 127
        OR c.user_type_id= 173 THEN
        NULL ELSE
        CASE
                
                WHEN c.PRECISION = 0 THEN
                NULL ELSE c.PRECISION
            END
            END AS NUMERIC_PRECISION,
        CASE
                
                WHEN c.user_type_id= 231
                OR c.user_type_id= 239 THEN
                    c.max_length / 2
                    WHEN ( c.user_type_id>= 40 AND c.user_type_id<= 62 )
                    OR c.user_type_id= 104
                    OR c.user_type_id= 127
                    OR c.user_type_id= 173 THEN
                        NULL ELSE c.max_length
                    END AS CHARACTER_MAXIMUM_LENGTH,
                    CAST ( d.definition AS VARCHAR ( 1000 ) ) AS COLUMN_DEFAULT,
                    CAST ( p.value AS VARCHAR ( 1000 ) ) AS COMMENTS
                FROM
                    sys.columns AS c
                    INNER JOIN sys.tables AS o ON c.object_id = o.object_id
                    LEFT OUTER JOIN [sys].[default_constraints] AS d ON d.object_id = c.default_object_id
                    LEFT OUTER JOIN [sys].[extended_properties] AS p ON c.object_id = p.major_id
                    AND c.column_id= p.minor_id
                    AND p.name IN ( 'comment', 'MS_Description' )
                WHERE
                    o.schema_id = SCHEMA_ID( 'DBO' ) UNION ALL
                SELECT CAST
                    ( o.name AS VARCHAR ( 1000 ) ) AS TABLE_NAME,
                    CAST ( c.name AS VARCHAR ( 100 ) ) AS COLUMN_NAME,
                    c.column_id AS ORDINAL_POSITION,
                    c.PRECISION AS DECIMAL_PRECISION,
                    c.SCALE AS NUMERIC_SCALE,
                    SCHEMA_NAME( o.schema_id ) AS TABLE_SCHEMA,
                    c.system_type_id AS SQL_DATA_TYPE,
                    c.user_type_id    ,
                    CAST ( TYPE_NAME( c.user_type_id ) AS VARCHAR ( 100 ) ) AS DATA_TYPE,
                    case when c.IS_NULLABLE=0 then 'No' else 'Yes' end as IS_NULLABLE   ,
                CASE
                        
                        WHEN ( c.user_type_id>= 40 AND c.user_type_id<= 62 )
                        OR c.user_type_id= 104
                        OR c.user_type_id= 127
                        OR c.user_type_id= 173 THEN
                        NULL ELSE
                        CASE
                                
                                WHEN c.PRECISION = 0 THEN
                                NULL ELSE c.PRECISION
                            END
                            END AS NUMERIC_PRECISION,
                        CASE
                                
                                WHEN c.user_type_id= 231
                                OR c.user_type_id= 239 THEN
                                    c.max_length / 2
                                    WHEN ( c.user_type_id>= 40 AND c.user_type_id<= 62 )
                                    OR c.user_type_id= 104
                                    OR c.user_type_id= 127
                                    OR c.user_type_id= 173 THEN
                                        NULL ELSE c.max_length
                                    END AS CHARACTER_MAXIMUM_LENGTH,
                                    CAST ( d.definition AS VARCHAR ( 1000 ) ) AS COLUMN_DEFAULT,
                                    CAST ( p.value AS VARCHAR ( 1000 ) ) AS COMMENTS
                                FROM
                                    sys.columns AS c
                                    INNER JOIN sys.views AS o ON c.object_id = o.object_id
                                    LEFT OUTER JOIN [sys].[default_constraints] AS d ON d.object_id = c.default_object_id
                                    LEFT OUTER JOIN [sys].[extended_properties] AS p ON c.object_id = p.major_id
                                    AND c.column_id= p.minor_id
                                    AND p.name IN ( 'comment', 'MS_Description' )
                            WHERE
    o.schema_id = SCHEMA_ID( 'DBO' )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值