powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / or в IB короткий или длинный
44 сообщений из 44, показаны все 2 страниц
or в IB короткий или длинный
    #32437987
Vatman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
скажите плиз, or в IB короткий или длинный.
Т.е. если в
Код: plaintext
if(( 1 )or( 2 ))

(1)истина то (2)проверяться будет?
и ещё вопрос
Код: plaintext
if(true or null)then ...

то что вместо "..." выполниться?
Код: plaintext
if(true and null)then ...

а здесь?
И можно ли как то настраивать поведение IB с null значениями в выражениях.
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438007
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторскажите плиз, or в IB короткий или длинный.
В IB длинный
авторИ можно ли как то настраивать поведение IB с null значениями в выражениях.
Нельзя.
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438017
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а в FB?
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438023
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В IB по моему до сих пор полная проверка логических выражений, а в FB1.5 по умолчанию включено короткое вычисление выражений, только никто не гарантирует тебе что выражение будет вычисляться слева направо...
А вычисление выражений с NULL никак нельзя настроить. Оно выполняется в соответствии со стандартом и документацией...
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438025
Vatman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ясно, длинный.
Не ясно, что будет.
как обработает IF ситуации когда один из операндов null
и еще если
Код: plaintext
1.
2.
A= 1 ;
B=null;
IF((true)or(A=B))then...

То чего будет. Выполниться if или нет?
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438032
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В FB1.5 это рулится параметром CompleteBooleanEvaluation .
По умолчанию =0 (т.е. "короткий").
Только учти, справа-налево , а не слева-направо, как в Pascal.
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438047
Vatman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438052
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ватман, что это было?
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438053
Vatman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо
Я правельно понял что писать так
Код: plaintext
if((a is null)or(a= 333 ))then...

неправельно, а правельно так
Код: plaintext
1.
2.
if(a is null)then...
else 
  if(a= 333 )then...
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438055
Vatman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Мимопроходящий
Это у меня кофе сегодня с утречка закончилось.
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438061
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
A= 1 ;
B=null;
IF((true)or(A=B))then...


В этом случае выполниться то, что в ветке else или ничего, ибо сказано в писании:
LangRefSyntax IF ( <condition>)
THEN < compound_statement>
[ELSE < compound_statement>]
Description The IF … THEN … ELSE statement selects alternative courses of action by testing a
specified condition.
condition is an expression that must evaluate to TRUE to execute the statement or block
following THEN. The optional ELSE clause specifies an alternative statement or block
executed if condition is not TRUE.
Argument Description
condition Boolean expression that evaluates to TRUE, FALSE, or UNKNOWN; must
be enclosed in parentheses
THEN compound_statement Statement or block executed if condition is TRUE
ELSE compound_statement Optional statement or block executed if condition is not TRUE
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438066
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что,

Код: plaintext
 "правда"  или  "неизвестночто" 


не равно "правда"?
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438074
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас тебя пошлют...
Читать Дейта...
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438098
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
между прочим, я никогда ничего не читал! до всего дошел сам - как Ломоносов!
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438106
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И букварь сам придумал?
Завидую...
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438110
Vatman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 fedd
только путь сей тернист, и на нём не избежно не один раз споткнёшься и будешь послан.

2Gold
спасибо

2Мимопроходящий
А вот если проитать то выясница что
"правда" или "неизвестночто" = "неизвестночто". Да?
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438120
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА вот если проитать то выясница что
"правда" или "неизвестночто" = "неизвестночто". Да?
Истину глаголишь!
Но лучше, таки почитать.
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438123
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
правда или правда - правда
правда или ложь - правда
ложь или ложь - ложь

=>

если хоть что-нибудь в "или" - правда, то и все правда

=>

правда или (хрен знает, правда или ложь) - правда

ересь?

а то Дейта пойду читать. дайте ссылку :)
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438128
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хочу понять! там это запостулировано или объяснено?
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438164
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Урок русского языка в грузинской школе:
  Дэти! Запомнитэ, слова "сол" и "фасол" пишетца с мягким знаком!
  А слова "вилька" и "тарэлька" без мягкого знака!
  Дэти! Это нэлзя понять! Это нужно запомнить !
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438174
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МимопроходящийИстину глаголишь!

Саш, ну неправда же это ;-) TRUE OR NULL = TRUE. FALSE AND NULL = FALSE. Всегда так было и будет.

Это в не-булевых операциях всегда результом будет NULL, если хоть один из операндов он же.
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438175
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это не наш, не ломоносовский метод!
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438177
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во!

Я был прафф!

Мимопроходящий - читать Дейта и Бойся с Кодтом!
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438187
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вдогонку.
FALSE OR NULL = NULL => FALSE
TRUE AND NULL = NULL => FALSE
:-)
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438191
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а

TRUE OR NULL = TRUE

а с ANDом я и не спорил :)
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438199
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну ладно, не будем педалировать, а то Мимопроходяший обидится и не будет больше тут появляться...

принимаю заказы на удаление постингов
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438209
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, бывает и на меня проруха
Не обратил внимание на OR
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438219
Vatman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СПАСИБО ВСЕМ.
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438302
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понимаю что под NULL везде подразумевали UNKNOWN?
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438325
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GoldЯ так понимаю что под NULL везде подразумевали UNKNOWN?

Они синонимичны. Даже стандарт не в состоянии внятно обозначить их различие ;-)
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438521
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот вы мне скажите, мне надо такое вот написать в триггере:
Код: plaintext
1.
  IF (UPDATING AND OLD.ID<>NEW.ID) THEN
    EXCEPTION ERROR;


Оно будет правильно работать или этого никто не гарантирует и лучше писать
Код: plaintext
1.
2.
  IF (UPDATING) THEN
    IF (OLD.ID<>NEW.ID) THEN
      EXCEPTION ERROR;
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438576
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
имхо,

1) если NEW.ID будет нулл, то эксепшн не выскочит, даже если OLD.ID тоже будет нулл, потому что любое сравнение с нуллом дает неправду...

2) если UPDATING будет нулл, то тоже не выскочит - а оно тебе так и надо.

вобщем, все равно как писать, только нужно иметь ввиду ситуацию 1)
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32438608
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UPDATING не может быть NULL/UNKNOWN, а вобще ты прав, оно по любому правильно работать будет, так как ID у меня объявлен как NOT NULL...
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32439171
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автортак как ID у меня объявлен как NOT NULL...

В триггере он тем не менее может быть NULL'ом, так что как он объявлен - не суть важно.
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32439765
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну OLD-значение в триггере не может быть NULL, а NEW-значение хоть и может, но сервер то ругнёться.
А вобще вы бы какой механизм посоветовали для проверки неизменности значения поля. Я иногда использую IF (COALESCE(OLD.FIELD,'+-=')<>COALESCE(NEW.FIELD,'=-+')), но это слишком длинно получается когда много полей :-/
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32439823
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНу OLD-значение в триггере не может быть NULL

Еще как может. Посмотри на OLD.ID в BEFORE INSERT OR UPDATE триггере в момент вставки...
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32439886
Denis Uskov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrЕще как может. Посмотри на OLD.ID в BEFORE INSERT OR UPDATE триггере в момент вставки...
Так вроде разговор про update? Неужели если field not null при update OLD.Field может быть NULL?
------------------------
С уважением, Denis Uskov
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32439935
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТак вроде разговор про update? Неужели если field not null при update OLD.Field может быть NULL?

Вроде как разговор уже вышел за рамки UPDATE ;-)

Ответ на твой вопрос: по-хорошему нет, не может. Но может по-плохому, если ты в этом триггере присвоил NULL в OLD.ID. К сожалению, сервер это допускает. И более того, это может быть причиной порчи БД. Т.к. присвоение идет во временный буфер записи, а не в таблицу, NOT NULL не проверяется.
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32441330
Denis Uskov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrНо может по-плохому, если ты в этом триггере присвоил NULL в OLD.ID
Теоритически наверное да, но ... Не я такими вещами не занимаюсь и другим не советую, да и зачем это? Не вижу примеров для работы с OLD.ID таким образом.
------------------------
С уважением, Denis Uskov
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32442069
Vatman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При благополучном стечвении обстоятельств, например много выпивки, мало закуски, багатая фантазия и отсутствие времени(желания) доделвать завтра можно и не такое придумать.
Правда как правило на утро это лечиться :)
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32442114
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну у меня есть идея зачем это может быть нужно. Допустим вам жалко объявлять новую переменную, но надо где-то сохранить промежуточное значение в универсальном триггере например при вставке. Вот и можно в переменную OLD положить ;-)
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32442301
Sclif
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fedd:
автор потому что любое сравнение с нуллом дает неправду
Не совсем верно. Будет не FALSE а UNKNOWN (NULL как угодно), а вот в IF пойдет на ELSE не потому что FALSE а потому что не TRUE.
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32442746
Denis Uskov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то я торможу :-(
feddпотому что любое сравнение с нуллом дает неправду
Это как?
Код: plaintext
1.
2.
3.
4.
5.
declare variable a1 integer;
declare variable a2 integer;
...
  a1 = null;
  a2 = null;
  if (a1 = a2) then ... else ...

Куда пойдет обработка?
------------------------
С уважением, Denis Uskov
...
Рейтинг: 0 / 0
or в IB короткий или длинный
    #32442756
srf2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на else пойдет
...
Рейтинг: 0 / 0
44 сообщений из 44, показаны все 2 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / or в IB короткий или длинный
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]