powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Странность при сопоставлении: <string> LIKE null в разных СУБД.
25 сообщений из 56, страница 1 из 3
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35576154
Ozzy The Terrible
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.
Запуск команды:
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 (ноль).

В оракле не проверял, лень тратить время на скачку и установку.
Проверьте, плз, на своих СУБД - у кого какой результат ?
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35576166
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Oracle - 0. И это правильно.

--
RemObjects AnyDAC 2.0 / 1.12
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35576532
Фотография barrabas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в оракле она вызовет даже ошибку т.к. нет from
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35576535
Ozzy The Terrible
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
barrabasв оракле она вызовет даже ошибку т.к. нет from дык добавьте фром дуал, неужто сложно ?
select case when ',005,006,007' like NULL then 1 else 0 end from dual - что возвращает ?
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35576756
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35576788
Favn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В 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 жжет
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35576802
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FavnMS SQL жжет

Счаз прибежит pkarklin и обнаружится, что у мелкомягких есть ещё
какая-нибудь опция коннекта типа SET ANSI ON, которую надо установить,
чтобы оно таки заработало как у людей...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35576807
Hallween
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имхо, сравнивать какое-либо выражение с null при помощи like это ... хм.. странно, мягко говоря
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35576810
Ozzy The Terrible
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hallween Имхо, сравнивать какое-либо выражение с null при помощи like это ... хм.. странно, мягко говоря почему ? идёт сопоставление данных двух табличек, в одной записаны "нормальные" строки типа ',003,005,007,009' etc, а во второй - шаблоны типа '%,005%,007%'. Но шаблоны эти сами тоже являются результатом некоторого сопоставления и могут оказаться null'ами. Что странного Вы видите ?
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35576815
Hallween
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЧто странного Вы видите ?
Для сравнения с null существует оператор IS [NOT] NULL, предусмотренный стандартом ANSI. Все остальное от лукавого, имхо
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35577061
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
FavnMS SQL жжет

Счаз прибежит pkarklin и обнаружится, что у мелкомягких есть ещё
какая-нибудь опция коннекта типа SET ANSI ON, которую надо установить,
чтобы оно таки заработало как у людей... SET ANSI_NULLS ON | OFF, IIRC
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35577065
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ozzy The Terribleselect case when ',005,006,007' like NULL then 1 else 0 end
в MS SQL 2005 XE возвращает 1 (единицу)
Здорово похоже на багу. Не должно такого быть ни с какими опциями и ни в какой ситуации.
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35577264
Фотография daw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Запуск команды:
>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
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35577648
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sybase sa10, результат 0.
Вообще странный запрос, т.к. любое логическая опреация с null должна давать null, следовательно использование такой операции напрямую в операторах типа case не очень верно, т.к. они оперируют булевыми типами. Итого приходим к ситуации, когда результат такой операции будет неопределен или вернее зависеть от конкретной реализации сервера. Несмотря на то, что остальные сревера кроме mssql2005 отработали как-бы верно, но все-равно, использование конструкции в таком виде разработчиком неверно логически.
Вывод - наличие null в объединении обязательно надо проверять через isnull.

Why CORBA is DEAD?
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35577696
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
select @@version
select case when ',005,006,007' like NULL then  1  else  0  end



Код: plaintext
1.
2.
3.
4.
5.
6.
Microsoft SQL Server 2005 - 9.00.3042.00 (Intel X86) 
	Feb  9 2007 22:47:07 
	Copyright (c) 1988-2005 Microsoft Corporation
	Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 1)

-----------
1


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) 
	Jul  9 2008 14:43:34 
	Copyright (c) 1988-2008 Microsoft Corporation
	Enterprise Evaluation Edition on Windows NT 5.2 <X86> (Build 3790: Service Pack 2)



-----------
0


-------------------------
There’s no silver bullet!
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35577936
M&#36;
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну вы даёте :-) А почему 0 - это правильно? А что "правильно" должен вернуть запрос
Код: plaintext
select case when ',005,006,007' not like NULL then  1  else  0  end from dual
Тоже 0? А где "правильнее" 0?
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35577960
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
M&#36;Тоже 0? А где "правильнее" 0?

Да, тоже 0. И правильнее он будет в обеих случаях. Добро пожаловать в
мир троичной логики.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35578107
M&#36;
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это двойные стандарты, а не троичная логика. Топикстартер написал кривой запрос, а народ обрадованно захлопал в ладошки, ещё бы - бага в блестящем и неповторимом MSSQL! Любой результат неверен. И хоть убейте, такой ужас писать меня не заставите. Даже если голосованием решим, что 0 - это всё-таки правильная фича :-)

Для топикстартера напишу, что в Оракле есть такая вещь, как nvl. Думаю, что и в блестящем и неповторимом тоже имеется что-то подобное.
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35578112
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_oldВообще странный запрос, т.к. любое логическая опреация с null должна давать null, следовательно использование такой операции напрямую в операторах типа case не очень верно, т.к. они оперируют булевыми типами.
Такое впечатление, что в Вашей реальности boolean значение не может быть null
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35578115
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
M$И хоть убейте, такой ужас писать меня не заставите.
В качестве эксперимента: каково Ваше отношение к идее вставить в каждую таблицу по специальной "пустой" записи с id = 0 и сделать все внешние ключи not null?
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35578122
M&#36;
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer Ggg_oldВообще странный запрос, т.к. любое логическая опреация с null должна давать null, следовательно использование такой операции напрямую в операторах типа case не очень верно, т.к. они оперируют булевыми типами.
Такое впечатление, что в Вашей реальности boolean значение не может быть null
Boolean НЕ может бить ничем, кроме true и false. И с каких пор в Вашей реальности появился тип boolean?
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35578134
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
M$ softwarerТакое впечатление, что в Вашей реальности boolean значение не может быть null
Boolean НЕ может бить ничем, кроме true и false.
Плюньте в лицо тому, кто Вам сказал такую глупость.

M$И с каких пор в Вашей реальности появился тип boolean?
Вы не понимаете разницы между "типом boolean" и "boolean значением"?
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35578141
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P. S. Программисты делятся на три типа - на тех, кто понимает троичную логику и на тех, кто ее не понимает
...
Рейтинг: 0 / 0
Странность при сопоставлении: <string> LIKE null в разных СУБД.
    #35578178
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
M$Boolean НЕ может бить ничем, кроме true и false. И с каких пор в Вашей реальности появился тип boolean?

В MS SQL булевый тип, возвращаемый выражением сравнения, может принимать одно из трех возможных значений - TRUE, FALSE и UNKNOWN. Последний как раз для случая, когда хотя бы один из операндов - NULL.

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


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