Sql server 查询完整列数据类型MSSQL
我需要查询完整的列数据类型,最终使用长度规范 如果我使用INFORMATION\u SCHEMA.COLUMNS或sp\u COLUMNS(@tablename)我会得到不同列中的类型、大小和数字,我必须用case语句解码每个数据类型 我写了一个这样的查询,但它不太可靠,我不确定它是否总是正确的。我希望有一种方法可以在一列中检索所有列类型 这是我的问题,我仍然需要解码许多类型:Sql server 查询完整列数据类型MSSQL,sql-server,sqldatatypes,system-views,Sql Server,Sqldatatypes,System Views,我需要查询完整的列数据类型,最终使用长度规范 如果我使用INFORMATION\u SCHEMA.COLUMNS或sp\u COLUMNS(@tablename)我会得到不同列中的类型、大小和数字,我必须用case语句解码每个数据类型 我写了一个这样的查询,但它不太可靠,我不确定它是否总是正确的。我希望有一种方法可以在一列中检索所有列类型 这是我的问题,我仍然需要解码许多类型: select a.TABLE_SCHEMA, a.TABLE_NAME, COLUMN_N
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'
查找下面的查询结果是否会令您满意,或者它可以帮助您接近结果 选择
t、 对象id为“表id”,
对象名称(t.object\u id)作为“表名”,
c、 列id“列id”,
c、 名称为“列名”,
c、 系统类型标识为“数据类型标识”,
ty.name+'('+convert(varchar(10),c.max_length)+')作为“数据类型”
从
sys.tables t内部连接sys.columns c
在t.object\u id=c.object\u id上
左连接系统类型ty
在c.system\u-type\u-id=ty.user\u-type\u-id
No上,因为我得到的数据类似于
int(4)
或decimal(13)
。在SQLServer中,声明@V int(4)
是语法错误,十进制(13)不检索精度的数字。