web-dev-qa-db-ja.com

SQL Serverに列が存在するかどうかを確認するにはどうすればよいですか?

SQL Server 2000に列が存在するかどうかを確認するにはどうすればよいですか?

25
user31071
IF EXISTS ( SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE  TABLE_NAME='tablename' AND COLUMN_NAME='columname' )
36
CMS
If col_length('table_name','column_name') is null
    select 0 as Present
ELSE
    select 1 as Present

存在は0になり、table_nameにcolumn_nameが存在しない場合、それ以外の場合は1になります。

@CMS:「INFORMATION_SCHEMA.COLUMNS」にDB内のすべてのテーブルに関する情報があるとは思いません。これは私にはうまくいかなかったからです。しかし、私の答えはうまくいきました。

8
Deepak Yadav

クエリアナライザで、フィールドが存在するかどうかを確認する必要があるテーブルを含むデータベースを選択し、以下のクエリを実行します。

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

これはうまくいくはずです:

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

このスクリプトがsqlserver2000で機能するかどうかはわかりませんが、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')
0
Douglas Tondo