|
|
|
Странность при сопоставлении: <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 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=35576815&tid=1553043]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 258ms |
| total: | 398ms |

| 0 / 0 |
