简体   繁体   English

查询全列数据类型MSSQL

[英]Query full column datatypes MSSQL

I need to query full columns datatype, eventually with length specification. 我需要查询完整的列数据类型,最终使用长度说明。

If I use INFORMATION_SCHEMA.COLUMNS or sp_Columns(@tablename) I get type, size, and digits in different columns and I have to decode each datatype with a case statement. 如果我使用INFORMATION_SCHEMA.COLUMNSsp_Columns(@tablename)则会在不同的列中获得类型,大小和数字,并且必须使用case语句对每个数据类型进行解码。

I wrote a query like that, but it's not much solid and i'm not sure is always right. 我写了这样的查询,但是它不是很可靠,我不确定是否总是正确的。 I hope there is a way to retrive all column type in one column. 我希望有一种方法可以在一列中检索所有列类型。

Here's my query, and I still have to decode many types: 这是我的查询,我仍然必须解码许多类型:

select
    a.TABLE_SCHEMA, 
    a.TABLE_NAME, 
    COLUMN_NAME, 
    case 
        when CHARACTER_MAXIMUM_LENGTH is not null then DATA_TYPE+'('+convert(varchar, CHARACTER_MAXIMUM_LENGTH)+')'
        when DATA_TYPE in ('int','datetime','time','date','text') then DATA_TYPE
        when DATA_TYPE in ('decimal','numeric') then DATA_TYPE+'('+convert(varchar,NUMERIC_PRECISION) +','+ convert(varchar,NUMERIC_SCALE) +')'
        else '' 
        end as FULL_DATA_TYPE
from INFORMATION_SCHEMA.COLUMNS a
inner join INFORMATION_SCHEMA.TABLES b
    on b.TABLE_NAME = a.TABLE_NAME
    and b.TABLE_SCHEMA = a.TABLE_SCHEMA
    and b.TABLE_TYPE = 'BASE TABLE'

Find the below query if the result come would be you satisfactory or it can help you to come close to the result 如果结果令人满意或可以帮助您接近结果,请查找以下查询

select 选择
t.object_id as 'Table ID', t.object_id为“表格ID”,
object_name(t.object_id) as 'Table Name', object_name(t.object_id)作为“表名”,
c.column_id 'Columns ID', c.column_id'列ID',
c.name as 'Column Name', c.name为“列名”,
c.system_type_id as 'Data Type ID', c.system_type_id作为“数据类型ID”,
ty.name + '(' + convert(varchar(10),c.max_length) + ')'as 'Data Type' ty.name +'('+ convert(varchar(10),c.max_length)+')'作为'数据类型'

from
sys.tables t inner join sys.columns c sys.tables t内部联接sys.columns c
on t.object_id=c.object_id 在t.object_id = c.object_id上
left join sys.types ty 左联接系统类型
on c.system_type_id =ty.user_type_id 在c.system_type_id = ty.user_type_id上

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM