
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
04.10.2008, 11:33
|
|||
|---|---|---|---|
|
|||
Странность при сопоставлении: <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:58
|
|||
|---|---|---|---|
|
|||
Странность при сопоставлении: <string> LIKE null в разных СУБД. |
|||
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.10.2008, 00:33
|
|||
|---|---|---|---|
Странность при сопоставлении: <string> LIKE null в разных СУБД. |
|||
|
#18+
в оракле она вызовет даже ошибку т.к. нет from ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.10.2008, 00:49
|
|||
|---|---|---|---|
|
|||
Странность при сопоставлении: <string> LIKE null в разных СУБД. |
|||
|
#18+
barrabasв оракле она вызовет даже ошибку т.к. нет from дык добавьте фром дуал, неужто сложно ? select case when ',005,006,007' like NULL then 1 else 0 end from dual - что возвращает ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.10.2008, 15:14
|
|||
|---|---|---|---|
|
|||
Странность при сопоставлении: <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, 16:54
|
|||
|---|---|---|---|
|
|||
Странность при сопоставлении: <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, 17:23
|
|||
|---|---|---|---|
|
|||
Странность при сопоставлении: <string> LIKE null в разных СУБД. |
|||
|
#18+
FavnMS SQL жжет Счаз прибежит pkarklin и обнаружится, что у мелкомягких есть ещё какая-нибудь опция коннекта типа SET ANSI ON, которую надо установить, чтобы оно таки заработало как у людей... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.10.2008, 17:33
|
|||
|---|---|---|---|
Странность при сопоставлении: <string> LIKE null в разных СУБД. |
|||
|
#18+
Имхо, сравнивать какое-либо выражение с null при помощи like это ... хм.. странно, мягко говоря ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.10.2008, 17:41
|
|||
|---|---|---|---|
|
|||
Странность при сопоставлении: <string> LIKE null в разных СУБД. |
|||
|
#18+
Hallween Имхо, сравнивать какое-либо выражение с null при помощи like это ... хм.. странно, мягко говоря почему ? идёт сопоставление данных двух табличек, в одной записаны "нормальные" строки типа ',003,005,007,009' etc, а во второй - шаблоны типа '%,005%,007%'. Но шаблоны эти сами тоже являются результатом некоторого сопоставления и могут оказаться null'ами. Что странного Вы видите ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.10.2008, 17:48
|
|||
|---|---|---|---|
Странность при сопоставлении: <string> LIKE null в разных СУБД. |
|||
|
#18+
авторЧто странного Вы видите ? Для сравнения с null существует оператор IS [NOT] NULL, предусмотренный стандартом ANSI. Все остальное от лукавого, имхо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.10.2008, 23:12
|
|||
|---|---|---|---|
Странность при сопоставлении: <string> LIKE null в разных СУБД. |
|||
|
#18+
Dimitry Sibiryakov FavnMS SQL жжет Счаз прибежит pkarklin и обнаружится, что у мелкомягких есть ещё какая-нибудь опция коннекта типа SET ANSI ON, которую надо установить, чтобы оно таки заработало как у людей... SET ANSI_NULLS ON | OFF, IIRC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.10.2008, 23:19
|
|||
|---|---|---|---|
Странность при сопоставлении: <string> LIKE null в разных СУБД. |
|||
|
#18+
Ozzy The Terribleselect case when ',005,006,007' like NULL then 1 else 0 end в MS SQL 2005 XE возвращает 1 (единицу) Здорово похоже на багу. Не должно такого быть ни с какими опциями и ни в какой ситуации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.10.2008, 09:18
|
|||
|---|---|---|---|
Странность при сопоставлении: <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, 11:48
|
|||
|---|---|---|---|
Странность при сопоставлении: <string> LIKE null в разных СУБД. |
|||
|
#18+
Sybase sa10, результат 0. Вообще странный запрос, т.к. любое логическая опреация с null должна давать null, следовательно использование такой операции напрямую в операторах типа case не очень верно, т.к. они оперируют булевыми типами. Итого приходим к ситуации, когда результат такой операции будет неопределен или вернее зависеть от конкретной реализации сервера. Несмотря на то, что остальные сревера кроме mssql2005 отработали как-бы верно, но все-равно, использование конструкции в таком виде разработчиком неверно логически. Вывод - наличие null в объединении обязательно надо проверять через isnull. Why CORBA is DEAD? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.10.2008, 11:59
|
|||
|---|---|---|---|
Странность при сопоставлении: <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, 13:09
|
|||
|---|---|---|---|
|
|||
Странность при сопоставлении: <string> LIKE null в разных СУБД. |
|||
|
#18+
Ну вы даёте :-) А почему 0 - это правильно? А что "правильно" должен вернуть запрос Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.10.2008, 13:17
|
|||
|---|---|---|---|
|
|||
Странность при сопоставлении: <string> LIKE null в разных СУБД. |
|||
|
#18+
M$Тоже 0? А где "правильнее" 0? Да, тоже 0. И правильнее он будет в обеих случаях. Добро пожаловать в мир троичной логики. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.10.2008, 14:08
|
|||
|---|---|---|---|
|
|||
Странность при сопоставлении: <string> LIKE null в разных СУБД. |
|||
|
#18+
Это двойные стандарты, а не троичная логика. Топикстартер написал кривой запрос, а народ обрадованно захлопал в ладошки, ещё бы - бага в блестящем и неповторимом MSSQL! Любой результат неверен. И хоть убейте, такой ужас писать меня не заставите. Даже если голосованием решим, что 0 - это всё-таки правильная фича :-) Для топикстартера напишу, что в Оракле есть такая вещь, как nvl. Думаю, что и в блестящем и неповторимом тоже имеется что-то подобное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.10.2008, 14:09
|
|||
|---|---|---|---|
Странность при сопоставлении: <string> LIKE null в разных СУБД. |
|||
|
#18+
Ggg_oldВообще странный запрос, т.к. любое логическая опреация с null должна давать null, следовательно использование такой операции напрямую в операторах типа case не очень верно, т.к. они оперируют булевыми типами. Такое впечатление, что в Вашей реальности boolean значение не может быть null ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.10.2008, 14:11
|
|||
|---|---|---|---|
Странность при сопоставлении: <string> LIKE null в разных СУБД. |
|||
|
#18+
M$И хоть убейте, такой ужас писать меня не заставите. В качестве эксперимента: каково Ваше отношение к идее вставить в каждую таблицу по специальной "пустой" записи с id = 0 и сделать все внешние ключи not null? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.10.2008, 14:14
|
|||
|---|---|---|---|
|
|||
Странность при сопоставлении: <string> LIKE null в разных СУБД. |
|||
|
#18+
softwarer Ggg_oldВообще странный запрос, т.к. любое логическая опреация с null должна давать null, следовательно использование такой операции напрямую в операторах типа case не очень верно, т.к. они оперируют булевыми типами. Такое впечатление, что в Вашей реальности boolean значение не может быть null Boolean НЕ может бить ничем, кроме true и false. И с каких пор в Вашей реальности появился тип boolean? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.10.2008, 14:16
|
|||
|---|---|---|---|
Странность при сопоставлении: <string> LIKE null в разных СУБД. |
|||
|
#18+
M$ softwarerТакое впечатление, что в Вашей реальности boolean значение не может быть null Boolean НЕ может бить ничем, кроме true и false. Плюньте в лицо тому, кто Вам сказал такую глупость. M$И с каких пор в Вашей реальности появился тип boolean? Вы не понимаете разницы между "типом boolean" и "boolean значением"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.10.2008, 14:18
|
|||
|---|---|---|---|
Странность при сопоставлении: <string> LIKE null в разных СУБД. |
|||
|
#18+
P. S. Программисты делятся на три типа - на тех, кто понимает троичную логику и на тех, кто ее не понимает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.10.2008, 14:28
|
|||
|---|---|---|---|
Странность при сопоставлении: <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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/search_topic.php?author=%D0%B8%D1%81%D0%BF%D0%B0%D1%86%D1%82%D1%83%D0%BB%D0%B0&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
get settings: |
10ms |
get forum list: |
14ms |
get settings: |
11ms |
get forum list: |
13ms |
get settings: |
8ms |
get forum list: |
11ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
24ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
116ms |
get tp. blocked users: |
1ms |
| others: | 1727ms |
| total: | 1991ms |

| 0 / 0 |
