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

Откуда:
Сообщений: 136
Подскажите, есть таблица dbo.mytab
там есть поле (mark)
как сделать, чтобы если для строки mark=0, то обнулить всю строку(т.е. все колонки должны равняться нулю)
12 мар 19, 14:37    [21830294]     Ответить | Цитировать Сообщить модератору
 Re: как обнулить данные  [new]
Konst_One
Member

Откуда:
Сообщений: 11175
update сделайте
12 мар 19, 14:38    [21830297]     Ответить | Цитировать Сообщить модератору
 Re: как обнулить данные  [new]
Kontox
Member

Откуда:
Сообщений: 136
я тоже об этом думал, но колонок много, по одной я не хочу, я хочу для всех сразу
update mytab
set * from mytab =0
where mark=0

ошибка
Сообщение 102, уровень 15, состояние 1, строка 977
Неправильный синтаксис около конструкции "*".
12 мар 19, 16:35    [21830496]     Ответить | Цитировать Сообщить модератору
 Re: как обнулить данные  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6259
Kontox,

автор
я хочу для всех сразу

это вам лень названия колонок писать или что?
12 мар 19, 16:37    [21830498]     Ответить | Цитировать Сообщить модератору
 Re: как обнулить данные  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36161
Kontox
Неправильный синтаксис около конструкции "*".
Ну так правильно, вы синтаксис придумали, а сервер должен делать?
12 мар 19, 16:38    [21830500]     Ответить | Цитировать Сообщить модератору
 Re: как обнулить данные  [new]
Kontox
Member

Откуда:
Сообщений: 136
TaPaK если колонок 5, то не лень, а если их сотни, вот тут есть трудности и лень тут не причем :)
12 мар 19, 17:32    [21830570]     Ответить | Цитировать Сообщить модератору
 Re: как обнулить данные  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6259
Kontox
TaPaK если колонок 5, то не лень, а если их сотни, вот тут есть трудности и лень тут не причем :)

между 5ю и 150 нет разницы в написании

ALT+1 на названии объекта, скопировать все колонки, вставить куда надо, ALT+SHIFT + ARROW протянуть все после название и вписать "= 0,"
12 мар 19, 17:36    [21830577]     Ответить | Цитировать Сообщить модератору
 Re: как обнулить данные  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6259
+ SCRIPT TABLE AS - UPDATE ... для мышкоюзеров
12 мар 19, 17:37    [21830582]     Ответить | Цитировать Сообщить модератору
 Re: как обнулить данные  [new]
Kontox
Member

Откуда:
Сообщений: 136
То что Вы сказали, в принципе сам знаю. Хотелось что -то по креативнее. Но ладно) Пусть так будет
12 мар 19, 17:58    [21830603]     Ответить | Цитировать Сообщить модератору
 Re: как обнулить данные  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36161
Kontox
То что Вы сказали, в принципе сам знаю. Хотелось что -то по креативнее. Но ладно) Пусть так будет
Ага, мышам тоже может быть хотелось стать ёжиками.
12 мар 19, 18:02    [21830612]     Ответить | Цитировать Сообщить модератору
 Re: как обнулить данные  [new]
PizzaPizza
Member

Откуда:
Сообщений: 222
Kontox
TaPaK если колонок 5, то не лень, а если их сотни, вот тут есть трудности и лень тут не причем :)


Мммм... Сотни колонок.
Почему у меня никогда не получается таких задач, где бы мне понадобились сотни колонок? Чяднт?
13 мар 19, 08:35    [21830939]     Ответить | Цитировать Сообщить модератору
 Re: как обнулить данные  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 18845
+ offtop
PizzaPizza
Чяднт?
Нормализуешь данные...
Своими глазами видел программу, использующую таблицу "один день - одно поле" с данными за 9 лет... 3300 полей... в Аксессе.

Kontox
я хочу для всех сразу
Удали запись да вставь новую, делов-то... Только сперва проверь, что все DEFAULT VALUES равны нулю.
13 мар 19, 09:24    [21830976]     Ответить | Цитировать Сообщить модератору
 Re: как обнулить данные  [new]
4d_monster
Member

Откуда: Москва
Сообщений: 1507
Kontox
я тоже об этом думал, но колонок много, по одной я не хочу, я хочу для всех сразу
update mytab
set * from mytab =0
where mark=0

Так ?
DECLARE @nameTable as nvarchar(512)
DECLARE @partSet as nvarchar(128)
DECLARE @partSetAndSep as nvarchar(128)
DECLARE @sqlDynamic as nvarchar(max)
DECLARE @partWhere as nvarchar(512)

SET @nameTable = 'mytab'
SET @partWhere = 'mark=0' 
SET @partSet = '=0 '
SET @partSetAndSep = @partSet + ', '

SELECT @sqlDynamic = 'UPDATE ' + QUOTENAME(@nameTable) + ' SET ' + STRING_AGG(QUOTENAME(cols.name), @partSetAndSep) + @partSet + ' WHERE ' + @partWhere +';' FROM sys.all_columns as cols INNER JOIN sys.all_objects as objs ON cols.object_id = objs.object_id WHERE objs.type ='U' AND objs.name = @nameTable

PRINT @sqlDynamic
13 мар 19, 09:52    [21830993]     Ответить | Цитировать Сообщить модератору
 Re: как обнулить данные  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6259
PizzaPizza
Kontox
TaPaK если колонок 5, то не лень, а если их сотни, вот тут есть трудности и лень тут не причем :)


Мммм... Сотни колонок.
Почему у меня никогда не получается таких задач, где бы мне понадобились сотни колонок? Чяднт?

на центре звезды ~221 колонка, без понятния что вы делаете
13 мар 19, 09:54    [21830995]     Ответить | Цитировать Сообщить модератору
 Re: как обнулить данные  [new]
PizzaPizza
Member

Откуда:
Сообщений: 222
TaPaK
PizzaPizza
пропущено...


Мммм... Сотни колонок.
Почему у меня никогда не получается таких задач, где бы мне понадобились сотни колонок? Чяднт?

на центре звезды ~221 колонка, без понятния что вы делаете


Ну ключи то понятно. Опять же не у каждого есть сущность на сотни аттрибутов.
Чаще всего такие широкие таблицы просто ошибка проектирования имхо.
13 мар 19, 18:25    [21831664]     Ответить | Цитировать Сообщить модератору
 Re: как обнулить данные  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6259
PizzaPizza
TaPaK
пропущено...

на центре звезды ~221 колонка, без понятния что вы делаете


Ну ключи то понятно. Опять же не у каждого есть сущность на сотни аттрибутов.
Чаще всего такие широкие таблицы просто ошибка проектирования имхо.

где ж вы были когда мы это проектировали, и это продаём....
13 мар 19, 18:26    [21831665]     Ответить | Цитировать Сообщить модератору
 Re: как обнулить данные  [new]
PizzaPizza
Member

Откуда:
Сообщений: 222
TaPaK
PizzaPizza
пропущено...


Ну ключи то понятно. Опять же не у каждого есть сущность на сотни аттрибутов.
Чаще всего такие широкие таблицы просто ошибка проектирования имхо.

где ж вы были когда мы это проектировали, и это продаём....


экий вы нервный, все на свой счёт принимаете

Попробуйте применять понятие "здравый смысл" в жизни. Например, какова вероятность, что человек продает программный продукт с промежуточной таблицей на 100+ полей и не знает синтаксис SQL?
13 мар 19, 19:37    [21831744]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить