如何检查SQL Server中是否存在列?

时间:2008-10-24 05:40:08

标签: sql-server metadata table-structure

如何检查SQL Server 2000中是否存在列?

5 个答案:

答案 0 :(得分:36)

IF EXISTS ( SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE  TABLE_NAME='tablename' AND COLUMN_NAME='columname' )

答案 1 :(得分:8)

If col_length('table_name','column_name') is null
    select 0 as Present
ELSE
    select 1 as Present

Present将为0,table_name中是否存在column_name,否则为1

@CMS:我不认为'INFORMATION_SCHEMA.COLUMNS'有关于DB中每个表的信息。因为这对我没用。但我的回答确实奏效了。

答案 2 :(得分:4)

在查询分析器中,选择包含您需要检查该字段是否存在的表的数据库,然后运行以下查询。

SELECT count(*) AS [Column Exists] 
FROM SYSOBJECTS  
INNER JOIN SYSCOLUMNS ON SYSOBJECTS.ID = SYSCOLUMNS.ID 
WHERE 
 SYSOBJECTS.NAME = 'myTable' 
 AND SYSCOLUMNS.NAME = 'Myfield'

答案 3 :(得分:1)

这应该做得很好:

if COLUMNPROPERTY(object_id('table_name'), 'column_name', 'ColumnId') is null
  print 'doesn\'t exist'
else
  print 'exists'

答案 4 :(得分:0)

我不知道这个脚本是否可以在sqlserver 2000中运行,但在2008年有效:

SELECT COLUMNS.*
FROM INFORMATION_SCHEMA.COLUMNS COLUMNS, INFORMATION_SCHEMA.TABLES TABLES
WHERE COLUMNS.TABLE_NAME=TABLES.TABLE_NAME AND UPPER(COLUMNS.COLUMN_NAME)=UPPER('column_name')