2016-08-16 4 views
0

Я хочу обновить нулевые столбцы с нулевым столбцом с одним запросом для всех столбцов таблицы. Как будто у меня есть столбец «int», который имеет нуль, тогда он будет 0, а «string» будет «».Обновление Не null во всех столбцах таблицы

Возможно ли с помощью одного SQL-запроса?

Я не хочу выполнять отдельные запросы для обновления и устанавливать не null, потому что у меня много таблиц и у меня много столбцов.

Заранее спасибо.

ответ

2

Там нет магии ярлыка - вам нужно будет использовать UPDATE команды для каждой таблицы, и вы должны перечислить каждый столбец, который вы хотите обновить отдельно:

UPDATE dbo.YourTable 
SET IntColumn = ISNULL(IntColumn, 0), 
    VarCharColumn = ISNULL(VarCharColumn, "") 

и так далее ....

0

нет реального ярлыка от сервера sql для этого, но вы можете использовать грязный путь, и вам нужно быть осторожным при его использовании.

declare @tableName varchar(200) = 'TABEL1' 
declare @query1 varchar(max) = '' 

select @query1 = @query1 + (case when @query1 = '' then '' else ', ' end) 
    + a.name +' = isnull('+a.name+','+ (case when a.system_type_id in (56) then '0' when a.system_type_id in (167) then '''''' else a.name END) +')' 
from sys.all_columns a 
inner join sys.all_objects b 
    on a.object_id = b.object_id 
where b.name = @tableName 

set @query1 = ' UPDATE '+ @tableName +' SET '+ @query1 

execute(@query1)