SQL Serverのテーブルに列が存在するかどうかを確認する方法は?

特定の列が存在しない場合に、その列を追加する必要があります。以下のようなものがありますが、常にfalseを返します。

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

SQL Serverデータベースのテーブルにカラムが存在するかどうかを確認するにはどうすればよいですか?

お客様のご要望に応じて、以下のように調整してください。

if not exists (select
                     column_name
               from
                     INFORMATION_SCHEMA.columns
               where
                     table_name = 'MyTable'
                     and column_name = 'MyColumn')
    alter table MyTable add MyColumn int

質問の編集に対応するための編集。例えば、挿入が適用されているのと同じデータベースのINFORMATION_SCHEMAを照会していますか?例えば、挿入が適用されているのと同じデータベースのINFORMATION_SCHEMAを照会していますか?どちらかのステートメントのテーブル/カラム名にタイプミスがありますか?

解説 (3)

試しに...

IF NOT EXISTS(
  SELECT TOP 1 1
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE 
    [TABLE_NAME] = 'Employees'
    AND [COLUMN_NAME] = 'EmployeeID')
BEGIN
  ALTER TABLE [Employees]
    ADD [EmployeeID] INT NULL
END
解説 (4)

まず、table/column(id/name)の組み合わせがdbo.syscolumns(フィールド定義を含むSQL Serverの内部テーブル)に存在するかどうかを確認し、存在しない場合は適切なALTER TABLEクエリを発行して追加します。例えば、以下のようになります。

IF NOT EXISTS ( SELECT  *
            FROM    syscolumns
            WHERE   id = OBJECT_ID('Client')
                    AND name = 'Name' ) 
ALTER TABLE Client
ADD Name VARCHAR(64) NULL
解説 (0)