Как проверить, существует ли столбец в таблице SQL Server? - PullRequest
1723 голосов
/ 25 сентября 2008

Мне нужно добавить определенный столбец, если он не существует. У меня есть что-то вроде следующего, но он всегда возвращает false:

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

Как проверить, существует ли столбец в таблице базы данных SQL Server?

Ответы [ 27 ]

5 голосов
/ 24 мая 2017

Одним из самых простых и понятных решений является:

IF COL_LENGTH('Table_Name','Column_Name') IS NULL
 BEGIN
    -- Column Not Exists, implement your logic
 END 
ELSE
 BEGIN
    -- Column Exists, implement your logic
 END
5 голосов
/ 16 ноября 2016

Вот простой скрипт, который я использую для управления добавлением столбцов в базу данных:

IF NOT EXISTS (
        SELECT *
        FROM sys.Columns
        WHERE Name = N'QbId'
            AND Object_Id = Object_Id(N'Driver')
        )
BEGIN
    ALTER TABLE Driver ADD QbId NVARCHAR(20) NULL
END
ELSE
BEGIN
    PRINT 'QbId is already added on Driver'
END

В этом примере Name - это добавляемое ColumnName, а Object_Id - это TableName

.
3 голосов
/ 30 октября 2018

Приведенный ниже запрос может быть использован для проверки наличия или отсутствия в таблице искомого столбца. Мы можем принять решение на основе результатов поиска, как показано ниже.

IF EXISTS (SELECT 'Y' FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = <YourTableName> AND COLUMN_NAME = <YourColumnName>)
  BEGIN
    SELECT 'Column Already Exists.'
  END
  ELSE
  BEGIN
    ALTER TABLE <YourTableName> ADD <YourColumnName> <DataType>[Size]
  END
2 голосов
/ 10 июля 2014

Еще один вариант ...

SELECT 
  Count(*) AS existFlag 
FROM 
  sys.columns 
WHERE 
  [name] = N 'ColumnName' 
  AND [object_id] = OBJECT_ID(N 'TableName')
0 голосов
/ 29 мая 2019

Выполните приведенный ниже запрос, чтобы проверить, существует ли столбец в данной таблице:

IF(SELECT COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'TableName' AND COLUMN_NAME = 'ColumnName') IS NOT NULL
PRINT 'Column Exists in the given table';
0 голосов
/ 10 мая 2019

таблица -> таблица сценариев как -> новые окна - у вас есть сценарий дизайна. проверить и найти имя столбца в новых окнах

0 голосов
/ 03 апреля 2019
IF EXISTS(SELECT 1 FROM sys.columns 
      WHERE Name = N'columnName'
      AND Object_ID = Object_ID(N'schemaName.tableName'))

Это должно быть довольно простым способом и прямым решением этой проблемы. Я использовал это несколько раз для подобных сценариев. Это работает как шарм, в этом нет сомнений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...