if select count(name) from syscolumns where name='字段名' and id=object_id('表名')>0 表示存在。
syscolumns:每个表和视图中的每列在表中占一行,存储过程中的每个参数在表中也占一行,也就是说,不止可以通过它判断是否存在于某表中,还可以是视图或存储过程。
object_id('对象名')等同于select id from sysobjects where name=‘对象名'
syscolumns
| 列名 | 数据类型 | 描述 |
|---|---|---|
| name | sysname | 列名或过程参数的名称。 |
| id | int | 该列所属的表对象 ID,或与该参数关联的存储过程 ID。 |
| xtype | tinyint | systypes 中的物理存储类型。 |
| typestat | tinyint | 仅限内部使用。 |
| xusertype | smallint | 扩展的用户定义数据类型 ID。 |
| length | smallint | systypes 中的最大物理存储长度。 |
| xprec | tinyint | 仅限内部使用。 |
| xscale | tinyint | 仅限内部使用。 |
| colid | smallint | 列或参数 ID。 |
| xoffset | smallint | 仅限内部使用。 |
| bitpos | tinyint | 仅限内部使用。 |
| reserved | tinyint | 仅限内部使用。 |
| colstat | smallint | 仅限内部使用。 |
| cdefault | int | 该列的默认值 ID。 |
| domain | int | 该列的规则或 CHECK 约束 ID。 |
| number | smallint | 过程分组时(0 表示非过程项)的子过程号。 |
| colorder | smallint | 仅限内部使用。 |
| autoval | varbinary(255) | 仅限内部使用。 |
| offset | smallint | 该列所在行的偏移量;如果为负,表示可变长度行。 |
| status | tinyint | 用于描述列或参数属性的位图: 0x08 = 列允许空值。 |
| type | tinyint | systypes 中的物理存储类型。 |
| usertype | smallint | systypes 中的用户定义数据类型 ID。 |
| printfmt | varchar(255) | 仅限内部使用。 |
| prec | smallint | 该列的精度级别。 |
| scale | int | 该列的小数位数。 |
| iscomputed | int | 表示是否已计算该列的标志: 0 = 未计算。 |
| isoutparam | int | 表示该过程参数是否是输出参数: 1 = 真。 |
| isnullable | int | 表示该列是否允许空值: 1 = 真。 |
OBJECT_ID
返回数据库对象标识号。
语法
OBJECT_ID ( 'object' )
参数
'object'
要使用的对象。object 的数据类型为 char 或 nchar。如果object 的数据类型是 char,那么隐性将其转换成 nchar。
返回类型
int
注释
当该参数对系统函数可选时,则系统采用当前数据库、主机、服务器用户或数据库用户。内置函数后面必须跟圆括号。
如果指定一个临时表名,则必须在临时表名前面加上数据库名,例如:
SELECT OBJECT_ID('tempdb..#mytemptable')
系统函数可以在选择列表、WHERE 子句和任何允许使用表达式的地方使用。有关更多信息,请参见表达式和WHERE。
示例
下面的示例为 pubs 数据库中的 authors 表返回对象 ID。
USE master
SELECT OBJECT_ID('pubs..authors')
下面是结果集:
----------- 1977058079 (1 row(s) affected)
829

被折叠的 条评论
为什么被折叠?



