Как проверить, существует ли столбец в SQL Server?
Как проверить, существует ли столбец в SQL Server 2000?
5 ответов
IF EXISTS ( SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME='tablename' AND COLUMN_NAME='columname' )
If col_length('table_name','column_name') is null
select 0 as Present
ELSE
select 1 as Present
Присутствует 0, если нет имени столбца в имени_таблицы, в противном случае 1
@CMS: я не думаю, что в INFORMATION_SCHEMA.COLUMNS есть информация о каждой таблице в БД. Потому что это не сработало для меня. Но мой ответ сработал.
В анализаторе запросов выберите базу данных, содержащую таблицу, в которой необходимо проверить, существует ли поле или нет, и выполните запрос ниже.
SELECT count(*) AS [Column Exists]
FROM SYSOBJECTS
INNER JOIN SYSCOLUMNS ON SYSOBJECTS.ID = SYSCOLUMNS.ID
WHERE
SYSOBJECTS.NAME = 'myTable'
AND SYSCOLUMNS.NAME = 'Myfield'
Это должно сделать красиво:
if COLUMNPROPERTY(object_id('table_name'), 'column_name', 'ColumnId') is null
print 'doesn\'t exist'
else
print 'exists'
Я не знаю, будет ли этот скрипт работать в SQL Server 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')