powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Все таки Oracle впереди планеты всей!
25 сообщений из 419, страница 13 из 17
Все таки Oracle впереди планеты всей!
    #36733301
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov AndreyВы пишете полную чушь (мы ведь Oracle Обсуждаем). Нельзя говорить, что '' ведет себя как NULL. Это все равно, что написать "ока ездит как ваз-1111".
'' и null это одно и то же. И поведение этой величины в разных конструкциях четко описаго в документации.
вот она - непоколебимая вера. Главное описать в документации и произнести устами Тома, или ему подобных, и все... ее не сломать. О чем здесь говорят? О логике? Смешно.
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36733324
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Favn,

а в процедурном sqlpl в db2, что получается в результате конкатинации с нулл ?
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36733603
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmвот она - непоколебимая вера. Главное описать в документации и произнести устами Тома, или ему подобных, и все... ее не сломать. О чем здесь говорят? О логике? Смешно.Причем здесь вера? Если я считаю, что человек порет чушь, я так и пишу. Если отдельные граждане никак не могут уяснить себе тот простой факт, что в Oracle null и пустая строка это одно и то же, то мне приходится быть не слишком вежливым дабы объяснить им это.
Заметьте, я ни в одном месте не написал того, что поведение Oracle в данном случае правильное, логичное и т.п.
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36733648
web_fox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov Andreyiscrafmвот она - непоколебимая вера. Главное описать в документации и произнести устами Тома, или ему подобных, и все... ее не сломать. О чем здесь говорят? О логике? Смешно.Причем здесь вера? Если я считаю, что человек порет чушь, я так и пишу. Если отдельные граждане никак не могут уяснить себе тот простой факт, что в Oracle null и пустая строка это одно и то же, то мне приходится быть не слишком вежливым дабы объяснить им это.
Заметьте, я ни в одном месте не написал того, что поведение Oracle в данном случае правильное, логичное и т.п.

Ну вы не правы, да ещё и нахамили Favn. Что вы нахамили, думаю, понятно. А не правы вы в том, что человек не ведёт дискусию так оно или не так в оракле. Он считает, что это нелогичное поведение для любого языка программирования.

Возьмём любого программиста, не знакомомго с оракл, и попросим его ответить что выведет данный код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
DECLARE
    col1 VARCHAR2( 1 );
BEGIN
    col1 := '';

    IF (col1 = '') THEN
        dbms_output.put_line('Всё логично.');
    ELSIF
        dbms_output.put_line('Обломись.');
    END IF;
END;

Совершенно очевидно, что это КОСТЫЛЬ. Совершенно очевидно, что НЕЛОГИЧНЫЙ.
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36733657
web_fox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и возьмём любимое нами веб-программирование (PHP):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<?

$a = '';

var_dump($a);

if( $a == '' )	echo	'Всё логично.';
else	echo	'Обломись.';

-----

string( 0 ) ""
Всё логично.

?>
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36733667
web_fox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov Andreyiscrafmвот она - непоколебимая вера. Главное описать в документации и произнести устами Тома, или ему подобных, и все... ее не сломать. О чем здесь говорят? О логике? Смешно.Причем здесь вера? Если я считаю, что человек порет чушь, я так и пишу. Если отдельные граждане никак не могут уяснить себе тот простой факт, что в Oracle null и пустая строка это одно и то же, то мне приходится быть не слишком вежливым дабы объяснить им это.
Заметьте, я ни в одном месте не написал того, что поведение Oracle в данном случае правильное, логичное и т.п.

Ну вот уважаемая редакция батьки Тома вам отвечает про "одно и тоже" по-английски:

батька ТомA ZERO length varchar is treated as NULL.

'' is not treated as NULL.

'' when assigned to a char(1) becomes ' ' (char types are blank padded strings).

'' when assigned to a varchar2(1) becomes '' which is a zero length string and a zero
length string is NULL in Oracle (it is no long '')
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36733673
web_fox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: этот пост я удаляю, надеюсь понятно почему
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36733686
web_fox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок. Я хотел сказать, что если кто-то думает, что '' и NULL одно и тоже. То Том Кайт мягко ответил им, что они ошибаются.
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36733723
Фотография StalkerS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FavnDimitry SibiryakovУгу, нельзя. Но никакой путаницы нет. Один раз получил ошибку в лоб и
тут же побежал снимать not null атрибут со всех строковых полей.Угу, со всех. Включая ключевые
раз у них принято как постулат, что null и пустая строка в реальном мире идентичны, то это вполне логичное следствие. Оставляем столбцы как not null, а пользователя заставляем что-то писать в соответствующие столбцы (включая ключевые)
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36734935
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StalkerSраз у них принято как постулат, что null и пустая строка в реальном мире идентичны, то это вполне логичное следствие. Оставляем столбцы как not null, а пользователя заставляем что-то писать в соответствующие столбцы (включая ключевые)
Возможно дело обстоит еще хуже (по крайней мере, если принимать Ваши постулаты): null и пустая строка существуют тока в компьютерном типа мире, а факты реального описываются знаками отличными от null и пустая строка.
Вот, возможно, Надо же все варианты учитывать, а не тока первые пришедшие в голову.
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36740487
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как прекрасно, что я открыл для себя этот форум. Что ж я делал раньше.
Фанатичность некоторых участников, конечно, просто зашкаливает... впрочем в этом можно увидеть плюс и возможность увидеть мир с другой точки зрения. Хуже уже когда человек абсолютно невосприимчив к аргументам, но с такими общение можно ограничивать несколькими постами. Ну это так... лирика.

Если честно пока прочитал только 5 страниц топика.
По поводу null и пустых строк:
Oracle:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SQL> select 'hello'||'' val from dual union all select 'hello'||null from dual;

VAL
-----
hello
hello

 2  строк выбрано.

SQL> 
SQL> select  0 +null id from dual;

        ID
----------


 1  строка выбрана.
MS SQL:
Код: plaintext
1.
2.
select 'hello'+'' val union all select 'hello'+NULL

select  0 +null id
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
val
------
hello
NULL

( 2  row(s) affected)

id
-----------
NULL

( 1  row(s) affected)
По троичной логике, если неопределенность прибавляется к чему-то, то результат тоже неопределен. Как видно из 'hello'+NULL для Оракла - это не выполняется. В МС СКЛ результат более логичен.
Но черт возьми смотреть как неглупые вроде люди с пеной у рта несколько страниц обсасывают эту тему - это просто капец! Не проще ли выучить тонкости обоих СУБД и поговорить о более интересных вещах.
Чем демонстрировать свою узколобость тем, что в моей любимой СУБД так, а во всех других сделано по идиотски.
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36740524
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О, смотрю на 13-й странице та же тема.
Может уже было предложено, но
SergSuperвот простой пример
допустим есть какая-то выплата, она может быть привязана к какому-то договору, может нет
если привязана надо писать "выплата 100 руб согласно договору №100", если нет - просто "выплата 100 руб"
если бы null не был бы пустой строкой, можно было бы просто написать
Код: plaintext
'выплата 100 руб '||nvl('согласно договору №'||dog_num, '')
мелочь, но удобно, приятно, облегчает жизнь и не вызывает острого желания выкинуть её нафиг

ну и сейчас, глядя на написанные тексты, я вижу много мест, которые можно было бы несколько упроститьну пишите так:
Код: plaintext
select 'выплата 100 руб '||nvl2(dog_num,'согласно договору №'||dog_num,null)
В чем проблема то? Это неудобно и неприятно?
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36740554
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopПо троичной логике, если неопределенность прибавляется к чему-то, то результат тоже неопределен.
Ну это Вы в троичной логике прибавляете неопределенность к строкам или числам. Однако, это все еще не достаточно распространенная пракатика. Например, операция сложения задана на множестве чисел. И такого элемента как неопределенность в этом множестве нет.
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36740628
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopО, смотрю на 13-й странице та же тема.
Может уже было предложено, но
SergSuperвот простой пример
допустим есть какая-то выплата, она может быть привязана к какому-то договору, может нет
если привязана надо писать "выплата 100 руб согласно договору №100", если нет - просто "выплата 100 руб"
если бы null не был бы пустой строкой, можно было бы просто написать
Код: plaintext
'выплата 100 руб '||nvl('согласно договору №'||dog_num, '')
мелочь, но удобно, приятно, облегчает жизнь и не вызывает острого желания выкинуть её нафиг

ну и сейчас, глядя на написанные тексты, я вижу много мест, которые можно было бы несколько упроститьну пишите так:
Код: plaintext
select 'выплата 100 руб '||nvl2(dog_num,'согласно договору №'||dog_num,null)
В чем проблема то? Это неудобно и неприятно?уважаемый, давайте-ка Вы будете повнимательней читать, и поменьше растопыривать пальцы. ок?
больше проблем нет
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36740723
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuperуважаемый, давайте-ка Вы будете повнимательней читать, и поменьше растопыривать пальцы. ок?
больше проблем нетЯ даже не пытался растопыривать пальцы и не собирался никаким боком тебя оскорблять.
Ну раз у ж ты позволяешь себе высказываться в таком духе, то я замечу, что я акцентировал внимание на том, что топик еще целиком не прочел.
И ты в свою очередь читай внимательнее, любезный.
PS Нельзя было просто написать "уже было"?
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36740756
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopЯ даже не пытался растопыривать пальцы значит мне показалось
dbms_photoshopФанатичность некоторых участников, конечно, просто зашкаливает...
...смотреть как неглупые вроде люди с пеной у рта несколько страниц обсасывают эту тему - это просто капец!..
...чем демонстрировать свою узколобость...можно и из других топиков надергать
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36740766
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
просто ЧСВ не правильно оценивается.
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36740776
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmпросто ЧСВ не правильно оценивается.
неправильно
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36740859
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuperdbms_photoshopЯ даже не пытался растопыривать пальцы значит мне показалось
dbms_photoshopФанатичность некоторых участников, конечно, просто зашкаливает...
...смотреть как неглупые вроде люди с пеной у рта несколько страниц обсасывают эту тему - это просто капец!..
...чем демонстрировать свою узколобость...можно и из других топиков надергатьОк, постараюсь изменить стиль.
Я хотел сделать акцент на том, что мне одинаково успешно удается разрабатывать и на МС СКЛ и на оракле учитывая указанную особенность со строками. И я считаю её именно особенностью а не недостатком какой либо из этих двух СУБД. Если человеку эта особенность сильно мешает разрабатывать, то, я думаю, ему стоит искать проблему в себе а не в СУБД.
И, скажите, пожалуйста, Вы много новых и свежих мыслей почерпнули со страниц 5-13?
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36740888
Favn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!а в процедурном sqlpl в db2, что получается в результате конкатинации с нулл ?А что там может получиться? В DB2 SQL и SQL PL исполняются одним процессом, без внешних VM. Естественно, результат тот же.
Код: plaintext
1.
2.
3.
4.
5.
CREATE FUNCTION ABCCONCAT( INSTR VARCHAR( 8 ) )
	RETURNS VARCHAR( 8 )
	NO EXTERNAL ACTION
F1: BEGIN
	RETURN 'ABC' || INSTR;
END
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
values( SH.ABCCONCAT( '' ) );
 1        
--------
ABC

values( SH.ABCCONCAT( NULL ) );
 1        
--------
-
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36740894
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuperdbms_photoshopФанатичность некоторых участников, конечно, просто зашкаливает...
...смотреть как неглупые вроде люди с пеной у рта несколько страниц обсасывают эту тему - это просто капец!..
...чем демонстрировать свою узколобость...можно и из других топиков надергатьНадергайте. И с чем Вы не согласны с содержанием или стилем?
Я каждый из приведенных тезисов могу обосновать.
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36740972
Favn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vadiminfoНу это Вы в троичной логике прибавляете неопределенность к строкам или числам. Однако, это все еще не достаточно распространенная пракатика. Например, операция сложения задана на множестве чисел. И такого элемента как неопределенность в этом множестве нет.
Естественно, неопределенности в самом множестве чисел нет. Иначе она не была бы неопределенностью, которая есть возможность любого значение из этого множества.
А вот в арифметике неопределенность есть - это результат деления на 0, т.к. любое число * 0 = 0.
Точно так же во множестве строк нет неопределенности. А вот пустая строка в нем есть, и это вполне определенное значение, к неопределенности с точки зрения здравого смысла никакого отношения не имеющая. Как и 0 (отсутствие значения) в арифметике.
И любая операция с неопределенностью, даже строковая, обязана возвращать неопределенность, т.к. ее результат по определению не известен.
PS. Ну что Вы, право :) Троичную логику вроде не я придумал :)
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36740980
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopSergSuperdbms_photoshopФанатичность некоторых участников, конечно, просто зашкаливает...
...смотреть как неглупые вроде люди с пеной у рта несколько страниц обсасывают эту тему - это просто капец!..
...чем демонстрировать свою узколобость...можно и из других топиков надергатьНадергайте. И с чем Вы не согласны с содержанием или стилем?здесь как бы принято возможности СУБД сравнивать, а не обсуждать мнения относительно участников дискуссии
ну и кроме того мне лично такой стиль общения кажется хамским, но это только моё личное мнение

dbms_photoshopЯ каждый из приведенных тезисов могу обосновать.это мало кому интересно
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36741029
Favn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dbms_photoshopНе проще ли выучить тонкости обоих СУБД и поговорить о более интересных вещах.
Чем демонстрировать свою узколобость тем, что в моей любимой СУБД так, а во всех других сделано по идиотски.Речь тут не об особенностях конкретных СУБД, а о том, что в данном случае Оракл несовместим со всеми остальными РСУБД на уровне не расширений, а древних базовых конструкций. И эта "тонкость" мало того что внутренне противоречива, еще и делает затруднительной миграцию на/с Оракла в некоторых случаях.

А вещь сия как раз весьма интересна и лично мне не до конца понятна в свете:
web_foxбатька ТомA ZERO length varchar is treated as NULL.

'' is not treated as NULL.

'' when assigned to a char(1) becomes ' ' (char types are blank padded strings).

'' when assigned to a varchar2(1) becomes '' which is a zero length string and a zero
length string is NULL in Oracle (it is no long '')Понятно, что работает это только для varchar, не для char (уже бездна "логики").
Но правильно ли я понял, что '' на самом деле не есть null, а null просто записывается в поле varchar при присваивании ему ''? Но при этом в строковых операциях уже null ведет себя как ''?
Люди, знакомые с Ораклом, поможите разобраться, дайте сцылочку! В этой "локике" лично я запутался окончательно.
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36741203
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FavnПонятно, что работает это только для varchar, не для char (уже бездна "логики").
Но правильно ли я понял, что '' на самом деле не есть null, а null просто записывается в поле varchar при присваивании ему ''?
Ну, как тут написали, null записывается не только в поле типа varchar (при попытке записи ''), но так же и в поле типа int.
А в поле типа char - нет, не записывается null
Бездна логики (с)

Если '' эквивалентно null (как тут пытались убедить), то почему оно не пишется как null в столбец char(1)?
Если '' не эквивалентно null (несмотря на все здешние убеждения), то почему оно вообще позволяет записать себя в int?
...
Рейтинг: 0 / 0
25 сообщений из 419, страница 13 из 17
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Все таки Oracle впереди планеты всей!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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