用一个Sql语句查询出表中的一个字段的数据类型问题。
我创建一张表createtableaa(aaaint,bbvarchar(20))我想用SQl语句查询出每个字段的数据类型以表的形似显示出来。intvarchar...
我创建一张表 create table aa( aaa int , bb varchar(20))我想用SQl语句查询出每个字段的数据类型以表的形似显示出来。int varchar
展开
7个回答
2017-06-27 · 知道合伙人软件行家
关注
展开全部
用Sql语句查询指定表格中指定字段的数据类型
一、语句通过systypes,syscolumns,sysobjects,三个系统表格联合检索获取结果。
systypes:数据库支持的数据类型属性。
syscolumns:数据库中各表格结构属性。
sysobjects:数据库中所有对象的属性。
二、检索语句演示
1、示例表格:base_zwb
2、语句如下:
select name from systypes where
xtype in (select xtype from syscolumns where name = 'zw_mc' and
id in (select ID from sysobjects where name = 'base_zwb'));
语句解析:
1):select ID from sysobjects where name = 'base_zwb'),从表格‘sysobjects ’中,获取表格'base_zwb'的对象ID
2):select xtype from syscolumns where name = 'zw_mc' and id in (select ID from sysobjects where name = 'base_zwb'),以字段名称‘zw_mc’和第1步中获取的‘ID’,从表格‘syscolumns ’中获取数据类型的编号'xtype'
3):以第2部获取的 'xtype'编号,从表格‘systypes ’中获取数据类型。
结果如图:
2013-03-28
展开全部
CREATEFUNCTIONFN_GetObjColInfo
(@ObjNamevarchar(50))
RETURNS@Return_TableTABLE(
TNamenvarchar(50),
TypeNamenvarchar(50),
TypeLengthnvarchar(50),
ColstatBit)
AS
BEGIN
INSERT@Return_Table
selectb.nameas字段名,c.nameas字段类型,b.length/2as字段长度,b.colstatas是否自动增长
fromsysobjectsa
innerjoinsyscolumnsbona.id=b.id
innerjoinsystypesconc.xusertype=b.xtype
wherea.name=@ObjName
orderbyB.ColID
RETURN
END
功能:返回某一表的所有字段、存储过程、函数的参数信息
(@ObjNamevarchar(50))
RETURNS@Return_TableTABLE(
TNamenvarchar(50),
TypeNamenvarchar(50),
TypeLengthnvarchar(50),
ColstatBit)
AS
BEGIN
INSERT@Return_Table
selectb.nameas字段名,c.nameas字段类型,b.length/2as字段长度,b.colstatas是否自动增长
fromsysobjectsa
innerjoinsyscolumnsbona.id=b.id
innerjoinsystypesconc.xusertype=b.xtype
wherea.name=@ObjName
orderbyB.ColID
RETURN
END
功能:返回某一表的所有字段、存储过程、函数的参数信息
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-03-28
展开全部
很简单select name,(select name from systypes where xusertype=syscolumns.xusertype) from syscolumns where id=object_id('aa')如果是其它的表,把'aa'换成别的表名就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SELECT
SO.name 表名,
SC.name 表列名,
--SC.colid 索引,
ST.name 类型
FROM
sysobjects SO, -- 对象表
syscolumns SC, -- 列名表
systypes ST -- 数据类型表
WHERE 1=1
and SO.id = SC.id
AND SO.xtype = 'U' -- 类型U表示表,V表示视图
AND SO.status >= 0 -- status >= 0 为非系统对象
AND SC.xtype = ST.xusertype
AND SO.name = 'aa' -- 某张特定表
执行下
SO.name 表名,
SC.name 表列名,
--SC.colid 索引,
ST.name 类型
FROM
sysobjects SO, -- 对象表
syscolumns SC, -- 列名表
systypes ST -- 数据类型表
WHERE 1=1
and SO.id = SC.id
AND SO.xtype = 'U' -- 类型U表示表,V表示视图
AND SO.status >= 0 -- status >= 0 为非系统对象
AND SC.xtype = ST.xusertype
AND SO.name = 'aa' -- 某张特定表
执行下
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-03-28
展开全部
什么数据库?Oracle,还是SQL Server 。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询