您的位置:首页 > 数据库

Ms SQL中 根据表名查询字段信息,根据表名和字段判断该字段是否存在

2010-06-03 10:31 501 查看
在ms sql中当我们需要修改表结构的时候,有时候因为添加或修改的表字段存在或不存在而导致后面的sql脚本执行失败。
这时我们需要一个语句来判断当前字段的有效性。然后再执行我们的sql脚本,这样就可以避免了。
--根据表名查询当前表的字段及其对应的表
select b.name tableName, a.name fieldName 
	from syscolumns  a join sysobjects b on a.id = b.id 
	where b.xtype = 'u' and b.name = 'mm_sample';
go
/*   
xtype 的表示参数类型,通常包括如下这些   
C = CHECK 约束   
D = 默认值或 DEFAULT 约束   
F = FOREIGN KEY 约束   
L = 日志   
FN = 标量函数   
IF = 内嵌表函数   
P = 存储过程   
PK = PRIMARY KEY 约束(类型是 K)   
RF = 复制筛选存储过程   
S = 系统表   
TF = 表函数   
TR = 触发器   
U = 用户表   
UQ = UNIQUE 约束(类型是 K)   
V = 视图   
X = 扩展存储过程   
*/
--根据表名查询字段信息
select name from syscolumns where id in (
	select id from sysobjects where name = 'mm_sample'
)
go
select table_Name, column_Name from information_schema.columns 
where table_name = 'mm_sample' 
go
select name, length from syscolumns 
where id = object_id( 'mm_sample ')
and colid in (
	select colid from sysindexkeys where id = object_id( 'mm_sample ')
)
go
--select object_id('mm_sample')
--select * from sysobjects where id = object_id('mm_sample')
select name, * from syscolumns where id = object_id('mm_sample')
go
--查看表信息
sp_help 'mm_sample'
go
if (exists (select name from syscolumns where id = object_id('mm_sample') and name = 'wt_id'))
	print '该字段已经存在!';
else 
	print '该字段不存在';
go
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: