Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 сделать null значения во всех столбцах кроме указанных  [new]
igr_ok
Member

Откуда:
Сообщений: 170
sql server 2005
В таблице несколько сотен полей (сводная таблица для отчета)
Мне нужно обнулить все поля, кроме 2-х. Существует способ сделать это, не прибегая к динамическим запросам? Впрочем, я согласен и на динамические, если есть готовое решение)
13 май 13, 14:10    [14287538]     Ответить | Цитировать Сообщить модератору
 Re: сделать null значения во всех столбцах кроме указанных  [new]
aleks2
Guest
select null,  null, FirstField, SecondField, null, null...
   from aTable
13 май 13, 14:15    [14287574]     Ответить | Цитировать Сообщить модератору
 Re: сделать null значения во всех столбцах кроме указанных  [new]
igr_ok
Member

Откуда:
Сообщений: 170
aleks2
select null,  null, FirstField, SecondField, null, null...
   from aTable
Речь идет об Update. И перечислять несколько сотен полей достаточно утомительно
13 май 13, 14:21    [14287616]     Ответить | Цитировать Сообщить модератору
 Re: сделать null значения во всех столбцах кроме указанных  [new]
Glory
Member

Откуда:
Сообщений: 104751
igr_ok
И перечислять несколько сотен полей достаточно утомительно

В SMS нажмите Script Tabel as Update
13 май 13, 14:37    [14287741]     Ответить | Цитировать Сообщить модератору
 Re: сделать null значения во всех столбцах кроме указанных  [new]
natya
Member [заблокирован]

Откуда: Азербайджан, Баку
Сообщений: 347
ест названия 2-х полей?
13 май 13, 14:46    [14287786]     Ответить | Цитировать Сообщить модератору
 Re: сделать null значения во всех столбцах кроме указанных  [new]
igr_ok
Member

Откуда:
Сообщений: 170
Glory
igr_ok
И перечислять несколько сотен полей достаточно утомительно

В SMS нажмите Script Tabel as Update
Нажал. Получаю список в виде
... [OTGR_3Y_1K] = <OTGR_3Y_1K, int,>
,[OTGR_3Y_2K] = <OTGR_3Y_2K, int,>
,[OTGR_3Y_3K] = <OTGR_3Y_3K, int,>
,[OTGR_3Y_4K] = <OTGR_3Y_4K, int,>

Конечно, это уже лучше, чем ничего, но менять в каждой строке
[OTGR_3Y_1K] =NULL,...
по-прежнему утомительно. Впрочем, 1 раз можно и поменять. Спасибо за помощь
natya
ест названия 2-х полей?
Конечно. Иначе задача не имеет смысла :)
13 май 13, 15:44    [14288203]     Ответить | Цитировать Сообщить модератору
 Re: сделать null значения во всех столбцах кроме указанных  [new]
Exproment
Member

Откуда:
Сообщений: 418
igr_ok, берите имена полей из системных представлений и составьте динамический запрос, в чем сложность ?
13 май 13, 15:52    [14288247]     Ответить | Цитировать Сообщить модератору
 Re: сделать null значения во всех столбцах кроме указанных  [new]
pio777
Member

Откуда:
Сообщений: 127
DECLARE @table sysname='table', @col1 sysname = 'col1', @col2 sysname = 'col2', @sql VARCHAR(MAX)

SET @sql= 'UPDATE ' + @table + ' SET '
SELECT @sql = @sql + name+' = NULL,' FROM sys.columns WHERE object_id = OBJECT_ID(@table) AND name NOT IN (@col1,@col2)
SET @sql = LEFT(@sql, LEN(@sql)-1)

EXEC(@sql)
13 май 13, 15:55    [14288285]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить