powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Странность при сопоставлении: <string> LIKE null в разных СУБД.
25 сообщений из 56, страница 2 из 3
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35578215
M&#36;
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerP. S. Программисты делятся на три типа - на тех, кто понимает троичную логику и на тех, кто ее не понимает Я не программист! Просто спорить люблю. Но я прекрасно вижу, что тот, кто ожидает каких-то результатов от использования таких кривостей либо крут, как варёные яйца и использует "специфические реализации", либо двоешник.
Мимопроходящий
помимо этого, есть ещё и неопределенное состояние - адепты M$
И мы гордимся этим! А всем, кто поощряет использование конструкций if 1 <> NULL then ... моё большое "фи"!
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35578224
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, M&#36;!
You wrote on Mon, 06 Oct 08 11:38:17 GMT:

M&#36 M> Я не программист! Просто спорить люблю.ааааа....
в сад, срочно!

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35578303
M&#36;
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий
в сад, срочно!
Ухожу :-( Злые вы. И чего накинулись-то? Интеллектом задавить решили? Но я вернусь... Дух M$ не сломить!
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35578332
Микросекунда
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
M&#36; пишет:

M> Дух M$ не сломить!

С такого перепугу можно и ... кхм... дух сломать. Или шуй. У кого что.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35578580
VoDA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
M$ softwarer Ggg_oldВообще странный запрос, т.к. любое логическая опреация с null должна давать null, следовательно использование такой операции напрямую в операторах типа case не очень верно, т.к. они оперируют булевыми типами.
Такое впечатление, что в Вашей реальности boolean значение не может быть null
Boolean НЕ может бить ничем, кроме true и false. И с каких пор в Вашей реальности появился тип boolean?Бред В РМ, которую и реализуют РСУБД троичная система счисления

Потому boolean может быть true, false ИЛИ не определено аки null.
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35578703
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoDAБред В РМ, которую и реализуют РСУБД троичная система счисления
Текст до смайлика следовало бы писать с отдельной строки. Как-никак заголовок.
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35579146
Ozzy The terrible
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
M$всем, кто поощряет использование конструкций if 1 <> NULL then ... моё большое "фи"!
2 M$ : Если это камень в мой огород, то Вы ошиблись адресом. Мне пришлось сопоставлять строку с помощью оператора LIKE с шаблоном, который заранее неизвестен . Он может оказаться корректным (типа '%,005%'), а может оказаться NULL'ом, т.к. сам является результатом некоторого сопоставления (других) таблиц. Вообще-то я накануне отвечал на эту тему

M$Топикстартер написал кривой запрос... (поскипано) И хоть убейте, такой ужас писать меня не заставите Тема топика совсем не про то, как надо и не надо писать запросы. Вас никто и не просил тут показывать своё мастерство.
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35579377
M&#36;
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer M$ softwarerТакое впечатление, что в Вашей реальности boolean значение не может быть null
Boolean НЕ может бить ничем, кроме true и false.
Плюньте в лицо тому, кто Вам сказал такую глупость.Georg Boole умер в 1864 году. Плюнуть ему в лицо не смогу не смотря на всё ваше желание.
Ozzy The terrible M$Топикстартер написал кривой запрос... (поскипано) И хоть убейте, такой ужас писать меня не заставите Тема топика совсем не про то, как надо и не надо писать запросы. Вас никто и не просил тут показывать своё мастерство.Это была попытка самозащиты, перевести стрелки, без обид. Может быть, это дело вкуса, я старался донести мысль, что все условия лучше привести к булевскому виду, тем более, что такие возможности есть, и есть они, наверное, вовсе не потому, что "программисты делятся на три типа - на тех, кто понимает троичную логику и на тех, кто ее не понимает" (с).
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35579993
VoDA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Текст до смайлика следовало бы писать с отдельной строки. Как-никак заголовок.Спасибо, теперь исправленный вариант.


В Реляционной алгебре, которую и реализуют Реляционные СУБД троичная система исчисления
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35580258
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoDA[quot softwarer]
В Реляционной алгебре, которую и реализуют Реляционные СУБД троичная система исчисления
Троичная система исчисления (это в которой циферки 0,1,2) и даже двоичная (эта в которой циферки 0,1) это совсем не тоже самое, что многозначная логика.
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35580465
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркТроичная система исчисления (это в которой циферки 0,1,2)
Не обязательно, кстати. По мне красивей та, в которой цифирки -1, 0 и 1.
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35580565
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer Локшин МаркТроичная система исчисления (это в которой циферки 0,1,2)
Не обязательно, кстати. По мне красивей та, в которой цифирки -1, 0 и 1.
Ну для устного счета мне привычнее несимметричная...
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35582352
VoDA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркТроичная система исчисления (это в которой циферки 0,1,2) и даже двоичная (эта в которой циферки 0,1) это совсем не тоже самое, что многозначная логика.Но многозначная логика также и " 0,1, 2, 3, 4 " И " 0, -1, -2, 1, 2, 3 " (цифры от балды)

А как правильнее тогда назвать логику: 0, 1, unknown ???
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35582808
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoDAА как правильнее тогда назвать логику: 0, 1, unknown ???
Вы неправильно ставите цифирки. Логика "0, 1, unknown" - это на самом деле логика "0, unknown, 1", и на самом деле это логика "0, 1, 2".
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35583264
Ozzy The Terrible
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerЛогика "0, 1, unknown" - это на самом деле логика "0, unknown, 1", и на самом деле это логика "0, 1, 2" -- но ведь для UNKNOWN действуют другие правила: true AND unknown = unknown и т.п. Имхо, не зря стали обозначать эту самую "третью циферку" НЕ в виде арабской цифры, а в виде буквенного литерала.
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35583362
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ozzy The Terrible-- но ведь для UNKNOWN действуют другие правила: true AND unknown = unknown
Плюньте в лицо тому, кто Вам сказал такую глупость.

Код: plaintext
1.
2.
3.
4.
5.
6.
false = 0
unknown = 1
true = 2

Операцию AND (a, b) определяем как min (значение_а, значение_b)
Операцию OR  (a, b) определяем как max (значение_а, значение_b)
Операцию NOT (a) определяем как (2 - значение_а)

С любопытством жду примеров исключения из правил.
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35583455
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer Ozzy The Terrible-- но ведь для UNKNOWN действуют другие правила: true AND unknown = unknown
Плюньте в лицо тому, кто Вам сказал такую глупость.

Код: plaintext
1.
2.
3.
4.
5.
6.
false = 0
unknown = 1
true = 2

Операцию AND (a, b) определяем как min (значение_а, значение_b)
Операцию OR  (a, b) определяем как max (значение_а, значение_b)
Операцию NOT (a) определяем как (2 - значение_а)

С любопытством жду примеров исключения из правил.

зач о т
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35584115
Ozzy The Terrible
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сорри, я неправильно выразил первую мысль: прочитал фразу "Троичная система исчисления (это в которой циферки 0,1,2)" [цитирую Локшина Марка] и выделил для себя именно слова "система счисления", т.е. "алфавит" для выражения любых чисел. Вот и хотел сказать, что набор {0, unknown, 1} не предназначен для выражения через него какого-либо числа вообще, т.к. применяется совершенно для других целей, а именно для вычисления логич. выражений.

авторС любопытством жду примеров исключения из правил. от меня не ждите ; я знаю про эту аналогию (читал не то у Селко, не то в книге "Задачи по SQL" С.И. Моисеенко, не помню точно).
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35584706
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerС любопытством жду примеров исключения из правил.Ну исключений не будет, а вот критика такого подхода...
У Ozzy The Terrible операции описываются очень простой таблицей (он правда не привел ее полностью, но думаю, что каждый может нарисовать), а у вас подход чрезвычайно сложный. Для того, чтобы описать такие элементарные операции, как OR, AND, NOT потребовалось
а) ввести отношение порядка
б) определить операции min и max
в) ввести операцию вычитания
Очень уж нерационально, хотя изоморфный алгебраический объект мы несомненно получим.
У вашего подхода преимущество только в том, что он допускает простое обобщение на случаи совсем уж многозначных логик вплоть до "нечеткой" логики, где множество допустимых значений континуально.
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35586044
MGR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerP. S. Программисты делятся на три типа - на тех, кто понимает троичную логику и на тех, кто ее не понимает

Не так
1. Программист понимает троичную логику
2. Программист не понимает троичную логику
3. Не определено

:)
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35586339
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MGRНе так
1. Программист понимает троичную логику
2. Программист не понимает троичную логику
3. Не определено

:)
Это формулировка для тех, кому все надо разжевывать :)
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35586443
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FALSE AND NULL = FALSE

Почему так приняли, как это можно объяснить?

Что бы ни стояло на месте NULL, что с FALSE-ом не пересекай, не получишь больше чем FALSE?

PS: А потом я задам еще один глупый вопрос.
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35586469
VoDA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer Ozzy The Terrible-- но ведь для UNKNOWN действуют другие правила: true AND unknown = unknown
Плюньте в лицо тому, кто Вам сказал такую глупость.

Код: plaintext
1.
2.
3.
4.
5.
6.
false = 0
unknown = 1
true = 2

Операцию AND (a, b) определяем как min (значение_а, значение_b)
Операцию OR  (a, b) определяем как max (значение_а, значение_b)
Операцию NOT (a) определяем как (2 - значение_а)

С любопытством жду примеров исключения из правил.Баловство все это ;)

исходя из ваших правил: false AND unknown должно давать ответ false, тогда !(false AND unknown) должно выдать true . Ваш предпочитаемый сервер Oracle в хранимке выдает другой результат:

Наполнение БД для получения значения NULL:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE TABLE "NULL_TABLE" 
   (	"NULL_COLUMN" NUMBER(*, 0 )
   );
   
INSERT INTO "NULL_TABLE" VALUES(null);

select * from NULL_TABLE;

NULL_COLUMN            
---------------------- 
                       

 1  rows selected

Сама процедура:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
CREATE OR REPLACE
PROCEDURE TEST_NULL AS
  cnumber number;
  abit boolean;
  cursor c1 is
  select null_column
  from null_table;
BEGIN
  open c1;
  fetch c1 into cnumber;
  
  -- Тут по вашей логике в abit должно быть false.
  -- сравнивать можно с любым числом поскольку в cnumber находится null.
  abit := (cnumber =  1 );
  
  if abit then
    dbms_output.put_line('true');
  else
    dbms_output.put_line('false');
  end if;
  
  --если было false, то должно стать true.
  abit := NOT abit;
  
  if abit then
    dbms_output.put_line('true');
  else
    dbms_output.put_line('false');
  end if;
  
  close c1;
END TEST_NULL;

Результат:
Код: plaintext
1.
2.
3.
4.
Connecting to the database localhost ***.
false
false
Process exited.
Disconnecting from the database localhost ***.
Получаем что и abit и NOT abit дает false!

PS Меня на дисциплинах по базам данных учили, что любой сравнение с unknown дает unknown. для логических выражений типа case, where и подобных unknown трактуется как NOT TRUE .
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35586479
VoDA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Н-дас... хотел разгромить оппонента, но не получилось... softwarer похоже прав, по крайней мере для Oracle.

Некоторые доработки хранимки дают интересный результат.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
BEGIN
  open c1;
  fetch c1 into cnumber;
  
  abit := (cnumber =  1 ) AND ( 1  =  0 );
  
  if abit then
    dbms_output.put_line('true');
  else 
    --если было false, то должно стать true.
    --abit := NOT abit;
    if NOT abit then
      dbms_output.put_line('false');
    else
      dbms_output.put_line('unknown');
    end if;
  end if;
  
  close c1;
END TEST_NULL;

Заменив расчет abit := (cnumber = 1); на abit := (cnumber = 1) AND (1 = 0);
получаем false вместо unknown


я в печали. нужно попытаться проверить для других СУБД.
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35586560
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoDAPS Меня на дисциплинах по базам данных учили, что любой сравнение с unknown дает unknown.
AND и OR - это не сравнения.
...
Рейтинг: 0 / 0
25 сообщений из 56, страница 2 из 3
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Странность при сопоставлении: <string> LIKE null в разных СУБД.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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