Дополнительно
Как проверить, существует ли столбец в таблице SQL Server?
Мне нужно добавить определенный столбец, если он не существует. У меня есть что-то вроде следующего, но оно всегда возвращает false:
IF EXISTS(SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'myTableName'
AND COLUMN_NAME = 'myColumnName')
Как проверить, существует ли столбец в таблице базы данных SQL Server?
1783
20
SQL сервер 2005 года:
Мартин Смит's версия короче:
Более лаконичный вариант
Пункт про разрешения на просмотр метаданных относится ко всем ответы не только этим.
Обратите внимание, что первым параметром имя таблицы
COL_LENGTH
может быть в один, два, или три части формата именем, как требуется.Пример ссылки на таблицу в другой базе данных
Одно отличие с этим ответом по сравнению с использованием представления метаданных является то, что функции метаданные, такие как `COL_LENGTH всегда возвращать только данные о совершенных изменений, независимо от уровня изоляции в силу.
Настройте приведенные ниже параметры в соответствии с вашими конкретными требованиями:
Правка для обработки правки вопроса: Это должно работать - внимательно просмотрите свой код на предмет глупых ошибок; например, вы запрашиваете INFORMATION_SCHEMA в той же базе данных, в которую применяется вставка? Нет ли у вас опечатки в имени таблицы/столбца в обоих утверждениях?
Попробуйте...
Я'д предпочитаете схемы information_schema.Колонн над системной таблицей, потому что Microsoft не гарантирует сохранения системных таблиц между версиями. Например,
ДБО.syscolumns
по-прежнему работает в SQL 2008, но это'ы устаревшим и может быть удален в любое время в будущем.Вы можете воспользоваться информационной системой представлений схемы, чтобы узнать почти все о таблицах вы'повторно заинтересованы в:
Вы также можете допрашивать представления, хранимые процедуры и почти все о базе данных, используя представления information_schema.
Для людей, которые проверяют наличие столбцов, чтобы удалить его.
От сервер SQL 2016 вы можете использовать новые умирать заявления, а не "если" фантики
Сначала проверьте, существует ли комбинация
table
/column
(id
/name
) вdbo.syscolumns
(внутренняя таблица SQL Server, содержащая определения полей), и если нет, выполните соответствующий запросALTER TABLE
, чтобы добавить ее. Например:Попробуйте что-то вроде:
Затем использовать его как это:
Он должен работать как сервер SQL 2000 & SQL сервер 2005. Не знаете о SQL Server 2008, но Дон'т вижу, почему нет.
Хороший друг и коллега показывал мне, как вы также можете использовать
если
блок с функции SQLобъект
ифункция columnproperty
в SQL сервер 2005+, чтобы проверить столбец. Вы можете использовать что-то похожее на следующее:Вы же сами видите здесь
Попробуйте это
Это работало для меня в SQL 2000:
Мне нужен подобный для SQL Server 2000 и, как @Митч, это работает только инм 2005+.
Это должно помочь кому-то еще, это то, что работал для меня в конце:
Временную таблицу версии принято отвечать:
Пшеница'ы ответ хороший, но предполагает, что вы не имеют каких-либо идентичных имя таблицы / столбца имя пары в любой схеме или базе данных. Чтобы сделать ее безопасной для этого условия используйте это...
Есть несколько способов проверить существование столбца. Я бы настоятельно рекомендуем использовать базы данных information_schema.Колонн как он создан для того, чтобы общаться с пользователем. Рассмотрим следующие таблицы:
и даже некоторые другие доступные методы доступа к проверить системный каталог.`
Кроме того, нет необходимости использовать
выберите *
, просто проверить его напустое значение