Имя: Пароль:
1C
 
Разница между естьnull и выбор
0 dmserg
 
27.05.09
11:37
Здравствуйте, подскажите пожалуйста - почему не работает вот такой запрос -

выбрать
ВЫБОР КОГДА  рег2.значение1=NULL  ТОГДА рег1.значение1 ИНАЧЕ рег2.значение2  КОНЕЦ КАК результат
из
регистрсведений1    как рег1
левое соединение
регистрсведений2    как рег2
по рег2.значение1 = рег1.значение1

Выражение рег2.значение1=NULL почемуто всегда ложное, хотя null есть. А естьNull в данной ситуации отрабатывает как надо. Почему так? И как проверять на null через выбор?
1 Andry888
 
27.05.09
11:40
Важно! Любая операция сравнения двух значений, в которой участвует хотя бы одно значение NULL, дает результат, аналогичный значению ЛОЖЬ.
2 H A D G E H O G s
 
27.05.09
11:40
КОГДА  рег2.значение1=NULL  

всегда даст ЛОЖЬ
3 Кадош
 
27.05.09
11:40
Любая операция, в которой значение одного из операндов NULL, будет давать результат NULL.
4 zyto
 
27.05.09
11:40
Используй Выбор Когда рег2.значение1 есть Null
5 Вигор
 
27.05.09
11:40
Сравнение с NULL всегда возвращает ЛОЖЬ. Надо использовать ЕСТЬ NULL
ВЫБОР КОГДА  рег2.значение1 ЕСТЬ NULL  ТОГДА
6 Кадош
 
27.05.09
11:40
ы
7 Mitriy
 
27.05.09
11:40
ВЫБОР КОГДА  рег2.значение1 Есть Null  ТОГДА
8 Нуф-Нуф
 
27.05.09
11:41
если будешь сравнивать с NULL   всегда получишь ложь
9 Mitriy
 
27.05.09
11:41
ыыы...
10 IamAlexy
 
27.05.09
11:41
доступно и всерьез.
11 H A D G E H O G s
 
27.05.09
11:41
И это всё? Ну, может кто еще выскажется?
12 Нуф-Нуф
 
27.05.09
11:42
ваще то NULL не мой, я просто дал объяву
13 dmserg
 
27.05.09
11:43
Всем спасибо.
14 mikecool
 
27.05.09
11:44
и выбор нафик не нужен
естьnull(рег2.значение1, рег2.значение2)
15 Нуф-Нуф
 
27.05.09
11:44
16 IamAlexy
 
27.05.09
11:45
(15)+1
17 zyto
 
27.05.09
11:54
(14)+1
Не вглядывался в условия из (0)
18 dmserg
 
27.05.09
11:59
(14)(17) выбор нужен потому что помимо самого значения  нужно подставить реквизит этого значения. -

Выбор когда рег2.значение1 естьнулл тогда рег1.значение1.реквизит иначе рег2.значение1.реквизит

Или тут тоже можно без выбора обойтись?
19 Mitriy
 
27.05.09
12:02
(18) тут можно... в (14) тебе все написали...
20 Вигор
 
27.05.09
12:10
(14) совсем не тот результат получается...
21 zyto
 
27.05.09
12:11
(19)Не, нельзя...
ЕстьNull выдаёт либо проверяемое значение, либо второе указанное.
А у него проверяемое это не то что будет на выходе...
22 hhhh
 
27.05.09
12:21
(21) а подумать если

естьnull(рег1.значение1.реквизит, рег2.значение1.реквизит)

Но вообще-то пример из (18) не будет работать, что-то он там накосячил.