|
|
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
Всем привет. Запуск команды: select case when ',005,006,007' like NULL then 1 else 0 end в MS SQL 2005 XE возвращает 1 (единицу). Такая же команда в Firebird 2.*: select case when ',005,006,007' like NULL then 1 else 0 end from rdb$database -- возвращает 0 (ноль). В оракле не проверял, лень тратить время на скачку и установку. Проверьте, плз, на своих СУБД - у кого какой результат ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2008, 11:33 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2008, 11:58 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
в оракле она вызовет даже ошибку т.к. нет from ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 00:33 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
barrabasв оракле она вызовет даже ошибку т.к. нет from дык добавьте фром дуал, неужто сложно ? select case when ',005,006,007' like NULL then 1 else 0 end from dual - что возвращает ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 00:49 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
Ozzy The Terrible wrote: > select case when ',005,006,007' like NULL then 1 else 0 end from dual - > что возвращает ? Возвратит 0, но, на всякий случай, это не означает, что ',005,006,007' like NULL = FALSE. Это означает, что сравнение с NULL вернуло NULL. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 15:14 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
В DB2 что values( case when ',005,006,007' like cast( null as char ) then 1 else 0 end ); что values( case when ',005,006,007' not like cast( null as char ) then 1 else 0 end ); и даже values( case when cast( null as char ) like cast( null as char ) then 1 else 0 end ); возвращает 0, что абсолютно правильно - любое сравнение с неопределенностью есть неопределенность, а никак не истина или ложь. MS SQL жжет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 16:54 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
FavnMS SQL жжет Счаз прибежит pkarklin и обнаружится, что у мелкомягких есть ещё какая-нибудь опция коннекта типа SET ANSI ON, которую надо установить, чтобы оно таки заработало как у людей... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 17:23 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
Имхо, сравнивать какое-либо выражение с null при помощи like это ... хм.. странно, мягко говоря ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 17:33 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
Hallween Имхо, сравнивать какое-либо выражение с null при помощи like это ... хм.. странно, мягко говоря почему ? идёт сопоставление данных двух табличек, в одной записаны "нормальные" строки типа ',003,005,007,009' etc, а во второй - шаблоны типа '%,005%,007%'. Но шаблоны эти сами тоже являются результатом некоторого сопоставления и могут оказаться null'ами. Что странного Вы видите ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 17:41 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
авторЧто странного Вы видите ? Для сравнения с null существует оператор IS [NOT] NULL, предусмотренный стандартом ANSI. Все остальное от лукавого, имхо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 17:48 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov FavnMS SQL жжет Счаз прибежит pkarklin и обнаружится, что у мелкомягких есть ещё какая-нибудь опция коннекта типа SET ANSI ON, которую надо установить, чтобы оно таки заработало как у людей... SET ANSI_NULLS ON | OFF, IIRC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 23:12 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
Ozzy The Terribleselect case when ',005,006,007' like NULL then 1 else 0 end в MS SQL 2005 XE возвращает 1 (единицу) Здорово похоже на багу. Не должно такого быть ни с какими опциями и ни в какой ситуации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2008, 23:19 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
>Запуск команды: >select case when ',005,006,007' like NULL then 1 else 0 end >в MS SQL 2005 XE возвращает 1 (единицу). бага это. на 8.00.2039 - 0 на 10.0.1600.22 тоже 0 на 9.00.3239.00 - 1. но, если любая из частей ',005,006,007' like NULL - не константа, то снова, как и положено, - 0. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 09:18 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
Sybase sa10, результат 0. Вообще странный запрос, т.к. любое логическая опреация с null должна давать null, следовательно использование такой операции напрямую в операторах типа case не очень верно, т.к. они оперируют булевыми типами. Итого приходим к ситуации, когда результат такой операции будет неопределен или вернее зависеть от конкретной реализации сервера. Несмотря на то, что остальные сревера кроме mssql2005 отработали как-бы верно, но все-равно, использование конструкции в таком виде разработчиком неверно логически. Вывод - наличие null в объединении обязательно надо проверять через isnull. Why CORBA is DEAD? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 11:48 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ------------------------- There’s no silver bullet! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 11:59 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
Ну вы даёте :-) А почему 0 - это правильно? А что "правильно" должен вернуть запрос Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 13:09 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
M$Тоже 0? А где "правильнее" 0? Да, тоже 0. И правильнее он будет в обеих случаях. Добро пожаловать в мир троичной логики. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 13:17 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
Это двойные стандарты, а не троичная логика. Топикстартер написал кривой запрос, а народ обрадованно захлопал в ладошки, ещё бы - бага в блестящем и неповторимом MSSQL! Любой результат неверен. И хоть убейте, такой ужас писать меня не заставите. Даже если голосованием решим, что 0 - это всё-таки правильная фича :-) Для топикстартера напишу, что в Оракле есть такая вещь, как nvl. Думаю, что и в блестящем и неповторимом тоже имеется что-то подобное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 14:08 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
Ggg_oldВообще странный запрос, т.к. любое логическая опреация с null должна давать null, следовательно использование такой операции напрямую в операторах типа case не очень верно, т.к. они оперируют булевыми типами. Такое впечатление, что в Вашей реальности boolean значение не может быть null ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 14:09 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
M$И хоть убейте, такой ужас писать меня не заставите. В качестве эксперимента: каково Ваше отношение к идее вставить в каждую таблицу по специальной "пустой" записи с id = 0 и сделать все внешние ключи not null? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 14:11 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
softwarer Ggg_oldВообще странный запрос, т.к. любое логическая опреация с null должна давать null, следовательно использование такой операции напрямую в операторах типа case не очень верно, т.к. они оперируют булевыми типами. Такое впечатление, что в Вашей реальности boolean значение не может быть null Boolean НЕ может бить ничем, кроме true и false. И с каких пор в Вашей реальности появился тип boolean? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 14:14 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
M$ softwarerТакое впечатление, что в Вашей реальности boolean значение не может быть null Boolean НЕ может бить ничем, кроме true и false. Плюньте в лицо тому, кто Вам сказал такую глупость. M$И с каких пор в Вашей реальности появился тип boolean? Вы не понимаете разницы между "типом boolean" и "boolean значением"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 14:16 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
P. S. Программисты делятся на три типа - на тех, кто понимает троичную логику и на тех, кто ее не понимает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 14:18 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
M$Boolean НЕ может бить ничем, кроме true и false. И с каких пор в Вашей реальности появился тип boolean? В MS SQL булевый тип, возвращаемый выражением сравнения, может принимать одно из трех возможных значений - TRUE, FALSE и UNKNOWN. Последний как раз для случая, когда хотя бы один из операндов - NULL. Что касается сабжа, то уже было сказано, что это бага. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 14:28 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
Hello, softwarer! You wrote on Mon, 06 Oct 08 11:18:12 GMT: s> P. S. Программисты делятся на три типа - на тех, s> кто понимает троичную логику и на тех, кто ее не понимает помимо этого, есть ещё и неопределенное состояние - адепты M$ -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 14:28 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
softwarerP. S. Программисты делятся на три типа - на тех, кто понимает троичную логику и на тех, кто ее не понимает Я не программист! Просто спорить люблю. Но я прекрасно вижу, что тот, кто ожидает каких-то результатов от использования таких кривостей либо крут, как варёные яйца и использует "специфические реализации", либо двоешник. Мимопроходящий помимо этого, есть ещё и неопределенное состояние - адепты M$ И мы гордимся этим! А всем, кто поощряет использование конструкций if 1 <> NULL then ... моё большое "фи"! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 14:38 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
Hello, M$! You wrote on Mon, 06 Oct 08 11:38:17 GMT: M$ M> Я не программист! Просто спорить люблю.ааааа.... в сад, срочно! -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 14:40 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий в сад, срочно! Ухожу :-( Злые вы. И чего накинулись-то? Интеллектом задавить решили? Но я вернусь... Дух M$ не сломить! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 15:02 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
M$ пишет: M> Дух M$ не сломить! С такого перепугу можно и ... кхм... дух сломать. Или шуй. У кого что. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 15:11 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
M$ softwarer Ggg_oldВообще странный запрос, т.к. любое логическая опреация с null должна давать null, следовательно использование такой операции напрямую в операторах типа case не очень верно, т.к. они оперируют булевыми типами. Такое впечатление, что в Вашей реальности boolean значение не может быть null Boolean НЕ может бить ничем, кроме true и false. И с каких пор в Вашей реальности появился тип boolean?Бред В РМ, которую и реализуют РСУБД троичная система счисления Потому boolean может быть true, false ИЛИ не определено аки null. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 16:40 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
VoDAБред В РМ, которую и реализуют РСУБД троичная система счисления Текст до смайлика следовало бы писать с отдельной строки. Как-никак заголовок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 17:21 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
M$всем, кто поощряет использование конструкций if 1 <> NULL then ... моё большое "фи"! 2 M$ : Если это камень в мой огород, то Вы ошиблись адресом. Мне пришлось сопоставлять строку с помощью оператора LIKE с шаблоном, который заранее неизвестен . Он может оказаться корректным (типа '%,005%'), а может оказаться NULL'ом, т.к. сам является результатом некоторого сопоставления (других) таблиц. Вообще-то я накануне отвечал на эту тему M$Топикстартер написал кривой запрос... (поскипано) И хоть убейте, такой ужас писать меня не заставите Тема топика совсем не про то, как надо и не надо писать запросы. Вас никто и не просил тут показывать своё мастерство. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 21:00 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
softwarer M$ softwarerТакое впечатление, что в Вашей реальности boolean значение не может быть null Boolean НЕ может бить ничем, кроме true и false. Плюньте в лицо тому, кто Вам сказал такую глупость.Georg Boole умер в 1864 году. Плюнуть ему в лицо не смогу не смотря на всё ваше желание. Ozzy The terrible M$Топикстартер написал кривой запрос... (поскипано) И хоть убейте, такой ужас писать меня не заставите Тема топика совсем не про то, как надо и не надо писать запросы. Вас никто и не просил тут показывать своё мастерство.Это была попытка самозащиты, перевести стрелки, без обид. Может быть, это дело вкуса, я старался донести мысль, что все условия лучше привести к булевскому виду, тем более, что такие возможности есть, и есть они, наверное, вовсе не потому, что "программисты делятся на три типа - на тех, кто понимает троичную логику и на тех, кто ее не понимает" (с). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2008, 07:07 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
softwarer Текст до смайлика следовало бы писать с отдельной строки. Как-никак заголовок.Спасибо, теперь исправленный вариант. В Реляционной алгебре, которую и реализуют Реляционные СУБД троичная система исчисления ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2008, 12:26 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
VoDA[quot softwarer] В Реляционной алгебре, которую и реализуют Реляционные СУБД троичная система исчисления Троичная система исчисления (это в которой циферки 0,1,2) и даже двоичная (эта в которой циферки 0,1) это совсем не тоже самое, что многозначная логика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2008, 13:29 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
Локшин МаркТроичная система исчисления (это в которой циферки 0,1,2) Не обязательно, кстати. По мне красивей та, в которой цифирки -1, 0 и 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2008, 14:27 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
softwarer Локшин МаркТроичная система исчисления (это в которой циферки 0,1,2) Не обязательно, кстати. По мне красивей та, в которой цифирки -1, 0 и 1. Ну для устного счета мне привычнее несимметричная... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2008, 14:54 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
Локшин МаркТроичная система исчисления (это в которой циферки 0,1,2) и даже двоичная (эта в которой циферки 0,1) это совсем не тоже самое, что многозначная логика.Но многозначная логика также и " 0,1, 2, 3, 4 " И " 0, -1, -2, 1, 2, 3 " (цифры от балды) А как правильнее тогда назвать логику: 0, 1, unknown ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2008, 10:54 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
VoDAА как правильнее тогда назвать логику: 0, 1, unknown ??? Вы неправильно ставите цифирки. Логика "0, 1, unknown" - это на самом деле логика "0, unknown, 1", и на самом деле это логика "0, 1, 2". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2008, 12:33 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
softwarerЛогика "0, 1, unknown" - это на самом деле логика "0, unknown, 1", и на самом деле это логика "0, 1, 2" -- но ведь для UNKNOWN действуют другие правила: true AND unknown = unknown и т.п. Имхо, не зря стали обозначать эту самую "третью циферку" НЕ в виде арабской цифры, а в виде буквенного литерала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2008, 14:26 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
Ozzy The Terrible-- но ведь для UNKNOWN действуют другие правила: true AND unknown = unknown Плюньте в лицо тому, кто Вам сказал такую глупость. Код: plaintext 1. 2. 3. 4. 5. 6. С любопытством жду примеров исключения из правил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2008, 14:59 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
softwarer Ozzy The Terrible-- но ведь для UNKNOWN действуют другие правила: true AND unknown = unknown Плюньте в лицо тому, кто Вам сказал такую глупость. Код: plaintext 1. 2. 3. 4. 5. 6. С любопытством жду примеров исключения из правил. зач о т ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2008, 15:23 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
Сорри, я неправильно выразил первую мысль: прочитал фразу "Троичная система исчисления (это в которой циферки 0,1,2)" [цитирую Локшина Марка] и выделил для себя именно слова "система счисления", т.е. "алфавит" для выражения любых чисел. Вот и хотел сказать, что набор {0, unknown, 1} не предназначен для выражения через него какого-либо числа вообще, т.к. применяется совершенно для других целей, а именно для вычисления логич. выражений. авторС любопытством жду примеров исключения из правил. от меня не ждите ; я знаю про эту аналогию (читал не то у Селко, не то в книге "Задачи по SQL" С.И. Моисеенко, не помню точно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2008, 19:09 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
softwarerС любопытством жду примеров исключения из правил.Ну исключений не будет, а вот критика такого подхода... У Ozzy The Terrible операции описываются очень простой таблицей (он правда не привел ее полностью, но думаю, что каждый может нарисовать), а у вас подход чрезвычайно сложный. Для того, чтобы описать такие элементарные операции, как OR, AND, NOT потребовалось а) ввести отношение порядка б) определить операции min и max в) ввести операцию вычитания Очень уж нерационально, хотя изоморфный алгебраический объект мы несомненно получим. У вашего подхода преимущество только в том, что он допускает простое обобщение на случаи совсем уж многозначных логик вплоть до "нечеткой" логики, где множество допустимых значений континуально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2008, 09:35 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
softwarerP. S. Программисты делятся на три типа - на тех, кто понимает троичную логику и на тех, кто ее не понимает Не так 1. Программист понимает троичную логику 2. Программист не понимает троичную логику 3. Не определено :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2008, 16:02 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
MGRНе так 1. Программист понимает троичную логику 2. Программист не понимает троичную логику 3. Не определено :) Это формулировка для тех, кому все надо разжевывать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2008, 17:24 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
FALSE AND NULL = FALSE Почему так приняли, как это можно объяснить? Что бы ни стояло на месте NULL, что с FALSE-ом не пересекай, не получишь больше чем FALSE? PS: А потом я задам еще один глупый вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2008, 17:52 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
softwarer Ozzy The Terrible-- но ведь для UNKNOWN действуют другие правила: true AND unknown = unknown Плюньте в лицо тому, кто Вам сказал такую глупость. Код: plaintext 1. 2. 3. 4. 5. 6. С любопытством жду примеров исключения из правил.Баловство все это ;) исходя из ваших правил: false AND unknown должно давать ответ false, тогда !(false AND unknown) должно выдать true . Ваш предпочитаемый сервер Oracle в хранимке выдает другой результат: Наполнение БД для получения значения NULL: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Сама процедура: Код: 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. Результат: Код: plaintext 1. 2. 3. 4. PS Меня на дисциплинах по базам данных учили, что любой сравнение с unknown дает unknown. для логических выражений типа case, where и подобных unknown трактуется как NOT TRUE . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2008, 18:02 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
Н-дас... хотел разгромить оппонента, но не получилось... softwarer похоже прав, по крайней мере для Oracle. Некоторые доработки хранимки дают интересный результат. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Заменив расчет abit := (cnumber = 1); на abit := (cnumber = 1) AND (1 = 0); получаем false вместо unknown я в печали. нужно попытаться проверить для других СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2008, 18:08 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
VoDAPS Меня на дисциплинах по базам данных учили, что любой сравнение с unknown дает unknown. AND и OR - это не сравнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2008, 18:51 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
LeXa NalBatПочему так приняли, как это можно объяснить? Это удобно. LeXa NalBatЧто бы ни стояло на месте NULL, что с FALSE-ом не пересекай, не получишь больше чем FALSE? Да, в том числе поэтому. Правда, эту логику не довели до конца - ноль умножить на нулл будет вовсе не ноль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2008, 18:55 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
LeXa NalBatFALSE AND NULL = FALSE Почему так приняли, как это можно объяснить? Что бы ни стояло на месте NULL, что с FALSE-ом не пересекай, не получишь больше чем FALSE? PS: А потом я задам еще один глупый вопрос. не так FALSE AND NULL = NULL а if работает только когда TRUE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2008, 21:55 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
softwarerПравда, эту логику не довели до конца - ноль умножить на нулл будет вовсе не ноль.да, собственно, этот вопрос я и хотел после поднять. SergSuperне так FALSE AND NULL = NULL а if работает только когда TRUEв постгресе FALSE AND NULL = FALSE http://www.postgresql.org/docs/8.3/static/functions-logical.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2008, 22:14 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
SergSuperне так FALSE AND NULL = NULL Не так. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2008, 00:54 |
|
||
|
Странность при сопоставлении: <string> LIKE null в разных СУБД.
|
|||
|---|---|---|---|
|
#18+
SergSuperне так FALSE AND NULL = NULL Википедия : Unknown^False -> False То есть, что бы ни стояло на месте Unknown, при конъюнкции это может стать только ложью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2008, 03:47 |
|
||
|
|

start [/forum/topic.php?all=1&fid=35&tid=1553043]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
73ms |
get tp. blocked users: |
1ms |
| others: | 10ms |
| total: | 170ms |

| 0 / 0 |
