2017-02-10 14 views
0

Я пытаюсь изменить тип данных для colyumn от bigint до int. Я знаю, как сделать альтер заявление и как узнать, какой тип данных в настоящее время возложены на него:SQL-Server: изменить тип данных ЕСЛИ это bigint

SELECT data_type 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'Table_Name' AND COLUMN_NAME = 'ColumnName' 

Однако я не могу понять, как сделать это в, если заявление. Мне нужно только изменить тип данных, если он в настоящее время является bigint.

В таблице нет строк, поэтому данные перемещения не являются проблемой на данный момент.

Я очень благодарен за помощь, спасибо заранее!

+0

Какой выход вы получаете, когда вы запускаете запрос, размещенный с имя_таблицей и именем столбца? –

+0

Совет сегодня: всегда есть сценарий для создания базы данных с нуля. Поскольку у вас нет данных, настройте этот сценарий и заново создайте базу данных. – jarlh

+0

@ChetanRanpariya запрос возвращает один столбец «data_type» с одним значением bigint –

ответ

1

Не нужно использовать IF Состояние: Добавить BIGINT фильтр в Where статья. Попробуйте что-то вроде этого

DECLARE @sql VARCHAR(8000)='' 

SET @sql = (SELECT 'alter table ' + Quotename(TABLE_NAME) 
        + ' alter column ' + Quotename(COLUMN_NAME) 
        + ' int ' + CASE WHEN IS_NULLABLE = 'yes' THEN ' NULL ' ELSE ' NOT NULL ' END 
      FROM INFORMATION_SCHEMA.COLUMNS 
      WHERE TABLE_NAME = 'Table_Name' 
        AND COLUMN_NAME = 'ColumnName' 
        AND DATA_TYPE = 'bigint') 

Exec (@sql) 

Если типа данных не BIGINT тогда будет ничего, чтобы выполнить

+0

Я пробовал несколько разных комбинаций вашего ответа, однако я, похоже, не нашел правильного, он, похоже, не работал для меня, однако я решил способ сделать это с помощью оператора IF, не знаю, что произошло раньше, но я просто застрял с ним. @Prdp Мне просто интересно, есть ли какие-то преимущества/недостатки в работе с IF или как вы предложили? Благодаря! –