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

Откуда: Израиль. Хадера.
Сообщений: 198
Имеется таблица abc с полями a, b, c типа nvarchar(50)

Пишу запрос:
UPDATE abc
Set a = b+c

После выполнения запроса в тех строках, в которых хотя бы одно из полей b или c имело значение NULL, в поле a записывается NULL.

Вопрос:
как изменить запрос, чтобы в поле а записывалось не NULL, в случае, если одно из полей в или с не NULL?

[b]Примечание:[/b] как в общем случае сделать подобный запрос, если полей гораздо больше.


Спасибо!
Евгений Боуден
25 июл 11, 14:53    [11023286]     Ответить | Цитировать Сообщить модератору
 Re: Сложение полей с NULL  [new]
Konst_One
Member

Откуда:
Сообщений: 11538
isnull(b,0)

???
25 июл 11, 14:58    [11023314]     Ответить | Цитировать Сообщить модератору
 Re: Сложение полей с NULL  [new]
Shakill
Member

Откуда: мск
Сообщений: 1880
evgenybe, посмотрите функцию ISNULL
25 июл 11, 14:58    [11023315]     Ответить | Цитировать Сообщить модератору
 Re: Сложение полей с NULL  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 2996
IsNull
?
25 июл 11, 14:58    [11023319]     Ответить | Цитировать Сообщить модератору
 Re: Сложение полей с NULL  [new]
Начинающий SQL 2008
Member

Откуда:
Сообщений: 438
evgenybe
как в общем случае сделать подобный запрос, если полей гораздо больше.
http://msdn.microsoft.com/ru-ru/library/ms190349.aspx
25 июл 11, 15:07    [11023378]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Сложение полей с NULL  [new]
semauxin
Member

Откуда:
Сообщений: 33
Вопрос тот же, но условие немного другое


Допустим есть 3 поля в таблице TableAll: Summa1, Summa2, Summa3 (суммы вычисленные из 3-х разных таблиц Table1, Table2, Table3) и одно поле SummaAll в которой вычисляется сумма всех этих полей.
Summa1 + Summa2 + Summa3 = SummaAll - поле SummaAll принимает значение только тогда, когда Summa1 > 0, Summa2 > 0, Summa3 > 0
А если одно из полей (Summa1) = 0, то и SummaAll тоже = 0...
Как написать формулу, чтобы в любом случае сложение происходило?
6 сен 12, 18:52    [13126223]     Ответить | Цитировать Сообщить модератору
 Re: Сложение полей с NULL  [new]
Alexandr Kr.
Member

Откуда: Украина, Харьков
Сообщений: 165
semauxin
Вопрос тот же, но условие немного другое


Допустим есть 3 поля в таблице TableAll: Summa1, Summa2, Summa3 (суммы вычисленные из 3-х разных таблиц Table1, Table2, Table3) и одно поле SummaAll в которой вычисляется сумма всех этих полей.
Summa1 + Summa2 + Summa3 = SummaAll - поле SummaAll принимает значение только тогда, когда Summa1 > 0, Summa2 > 0, Summa3 > 0
А если одно из полей (Summa1) = 0, то и SummaAll тоже = 0...
Как написать формулу, чтобы в любом случае сложение происходило?


А вы внимательно прочитали пост?
и как понимать эту часть?
semauxin
А если одно из полей (Summa1) = 0, то и SummaAll тоже = 0...

ведь вроде как пока что 1+1+0 не является 0.
А если вопрос тосит про null, то ответ дан уже выше.
6 сен 12, 19:11    [13126285]     Ответить | Цитировать Сообщить модератору
 Re: Сложение полей с NULL  [new]
semauxin
Member

Откуда:
Сообщений: 33
Alexandr Kr.,

IsNull не работает. Говорит что недостаточно аргументов.
Вот конкретный пример
SELECT Nomer, (ISNULL(SummaPriceTextileCalc,0) + ISNULL(SummaPriceLightCalc,0) + ISNULL(SummaPraicMebelCalc,0)) FROM qdfZakaziFlat

К сообщению приложен файл. Размер - 29Kb
6 сен 12, 19:39    [13126356]     Ответить | Цитировать Сообщить модератору
 Re: Сложение полей с NULL  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Выкиньте ваше приложение, которое показывает эту ошибку. Запрос компилится.
6 сен 12, 19:46    [13126381]     Ответить | Цитировать Сообщить модератору
 Re: Сложение полей с NULL  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Ну или крайние скобки уберите.
6 сен 12, 19:46    [13126385]     Ответить | Цитировать Сообщить модератору
 Re: Сложение полей с NULL  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 2996
semauxin
Summa1 + Summa2 + Summa3 = SummaAll - поле SummaAll принимает значение только тогда, когда Summa1 > 0, Summa2 > 0, Summa3 > 0
А если одно из полей (Summa1) = 0, то и SummaAll тоже = 0...


ту вообще-то и case нужен, для таких условий
как-то так
case 
  when isnull(Summa1, 0) = 0 then 0
  when isnull(Summa1, 0) > 0 and isnull(Summa2, 0) > 0 and isnull(Summa3, 0) > 0 then isnull(Summa1, 0) + isnull(Summa2, 0) + isnull(Summa3, 0)
end
7 сен 12, 08:16    [13127556]     Ответить | Цитировать Сообщить модератору
 Re: Сложение полей с NULL  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31442
HandKot
ту вообще-то и case нужен, для таких условий
Тут непонятно, что semauxin имел в виду - описал ошибку, или сказал, что ему надо :-)

Поразительные способности объяснть задачу :-)
7 сен 12, 08:38    [13127586]     Ответить | Цитировать Сообщить модератору
 Re: Сложение полей с NULL  [new]
SunJun
Member

Откуда:
Сообщений: 135
isnull(a,0) + isnull(b,0) .........
7 сен 12, 16:03    [13131045]     Ответить | Цитировать Сообщить модератору
 Re: Сложение полей с NULL  [new]
qwerty112
Guest
судя по ошибке тут - 13126356
у автора Акцесс (или, по крайней мере, запрос выполняет Jet) и он просто заблудился
7 сен 12, 16:29    [13131292]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить