Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 8 9 10 11 12 [13] 14 15 16 17   вперед  Ctrl
 Re: Все таки Oracle впереди планеты всей!  [new]
iscrafm
Member [заблокирован]

Откуда:
Сообщений: 35345
Bogdanov Andrey
Вы пишете полную чушь (мы ведь Oracle Обсуждаем). Нельзя говорить, что '' ведет себя как NULL. Это все равно, что написать "ока ездит как ваз-1111".
'' и null это одно и то же. И поведение этой величины в разных конструкциях четко описаго в документации.

вот она - непоколебимая вера. Главное описать в документации и произнести устами Тома, или ему подобных, и все... ее не сломать. О чем здесь говорят? О логике? Смешно.
9 июл 10, 18:02    [9081160]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
Yo.!
Guest
Favn,

а в процедурном sqlpl в db2, что получается в результате конкатинации с нулл ?
9 июл 10, 18:10    [9081207]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
Bogdanov Andrey
Member

Откуда: Да уже и сам не знаю...
Сообщений: 2203
iscrafm
вот она - непоколебимая вера. Главное описать в документации и произнести устами Тома, или ему подобных, и все... ее не сломать. О чем здесь говорят? О логике? Смешно.
Причем здесь вера? Если я считаю, что человек порет чушь, я так и пишу. Если отдельные граждане никак не могут уяснить себе тот простой факт, что в Oracle null и пустая строка это одно и то же, то мне приходится быть не слишком вежливым дабы объяснить им это.
Заметьте, я ни в одном месте не написал того, что поведение Oracle в данном случае правильное, логичное и т.п.
9 июл 10, 22:31    [9081832]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
web_fox
Member

Откуда: Киев
Сообщений: 444
Bogdanov Andrey
iscrafm
вот она - непоколебимая вера. Главное описать в документации и произнести устами Тома, или ему подобных, и все... ее не сломать. О чем здесь говорят? О логике? Смешно.
Причем здесь вера? Если я считаю, что человек порет чушь, я так и пишу. Если отдельные граждане никак не могут уяснить себе тот простой факт, что в Oracle null и пустая строка это одно и то же, то мне приходится быть не слишком вежливым дабы объяснить им это.
Заметьте, я ни в одном месте не написал того, что поведение Oracle в данном случае правильное, логичное и т.п.


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

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

DECLARE
    col1 VARCHAR2(1);
BEGIN
    col1 := '';

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

Совершенно очевидно, что это КОСТЫЛЬ. Совершенно очевидно, что НЕЛОГИЧНЫЙ.
9 июл 10, 23:44    [9081988]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
web_fox
Member

Откуда: Киев
Сообщений: 444
Ну и возьмём любимое нами веб-программирование (PHP):

<?

$a = '';

var_dump($a);

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

-----

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

?>
9 июл 10, 23:51    [9082007]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
web_fox
Member

Откуда: Киев
Сообщений: 444
Bogdanov Andrey
iscrafm
вот она - непоколебимая вера. Главное описать в документации и произнести устами Тома, или ему подобных, и все... ее не сломать. О чем здесь говорят? О логике? Смешно.
Причем здесь вера? Если я считаю, что человек порет чушь, я так и пишу. Если отдельные граждане никак не могут уяснить себе тот простой факт, что в 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 '')
10 июл 10, 00:15    [9082068]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
web_fox
Member

Откуда: Киев
Сообщений: 444
Модератор: этот пост я удаляю, надеюсь понятно почему


Сообщение было отредактировано: 10 июл 10, 00:33
10 июл 10, 00:25    [9082090]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
web_fox
Member

Откуда: Киев
Сообщений: 444
Ок. Я хотел сказать, что если кто-то думает, что '' и NULL одно и тоже. То Том Кайт мягко ответил им, что они ошибаются.
10 июл 10, 00:53    [9082127]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
StalkerS
Member

Откуда: Melbourne
Сообщений: 1344
Favn
Dimitry Sibiryakov
Угу, нельзя. Но никакой путаницы нет. Один раз получил ошибку в лоб и
тут же побежал снимать not null атрибут со всех строковых полей.
Угу, со всех. Включая ключевые

раз у них принято как постулат, что null и пустая строка в реальном мире идентичны, то это вполне логичное следствие. Оставляем столбцы как not null, а пользователя заставляем что-то писать в соответствующие столбцы (включая ключевые)
10 июл 10, 03:25    [9082196]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
vadiminfo
Member

Откуда: Обнинск
Сообщений: 4802
StalkerS
раз у них принято как постулат, что null и пустая строка в реальном мире идентичны, то это вполне логичное следствие. Оставляем столбцы как not null, а пользователя заставляем что-то писать в соответствующие столбцы (включая ключевые)

Возможно дело обстоит еще хуже (по крайней мере, если принимать Ваши постулаты): null и пустая строка существуют тока в компьютерном типа мире, а факты реального описываются знаками отличными от null и пустая строка.
Вот, возможно, Надо же все варианты учитывать, а не тока первые пришедшие в голову.
11 июл 10, 20:57    [9084528]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
dbms_photoshop
Member

Откуда:
Сообщений: 5151
Как прекрасно, что я открыл для себя этот форум. Что ж я делал раньше.
Фанатичность некоторых участников, конечно, просто зашкаливает... впрочем в этом можно увидеть плюс и возможность увидеть мир с другой точки зрения. Хуже уже когда человек абсолютно невосприимчив к аргументам, но с такими общение можно ограничивать несколькими постами. Ну это так... лирика.

Если честно пока прочитал только 5 страниц топика.
По поводу null и пустых строк:
Oracle:
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:
select 'hello'+'' val union all select 'hello'+NULL

select 0+null id
val
------
hello
NULL

(2 row(s) affected)

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

(1 row(s) affected)
По троичной логике, если неопределенность прибавляется к чему-то, то результат тоже неопределен. Как видно из 'hello'+NULL для Оракла - это не выполняется. В МС СКЛ результат более логичен.
Но черт возьми смотреть как неглупые вроде люди с пеной у рта несколько страниц обсасывают эту тему - это просто капец! Не проще ли выучить тонкости обоих СУБД и поговорить о более интересных вещах.
Чем демонстрировать свою узколобость тем, что в моей любимой СУБД так, а во всех других сделано по идиотски.
14 июл 10, 13:00    [9101563]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
dbms_photoshop
Member

Откуда:
Сообщений: 5151
О, смотрю на 13-й странице та же тема.
Может уже было предложено, но
SergSuper
вот простой пример
допустим есть какая-то выплата, она может быть привязана к какому-то договору, может нет
если привязана надо писать "выплата 100 руб согласно договору №100", если нет - просто "выплата 100 руб"
если бы null не был бы пустой строкой, можно было бы просто написать
'выплата 100 руб '||nvl('согласно договору №'||dog_num, '')
мелочь, но удобно, приятно, облегчает жизнь и не вызывает острого желания выкинуть её нафиг

ну и сейчас, глядя на написанные тексты, я вижу много мест, которые можно было бы несколько упростить
ну пишите так:
select 'выплата 100 руб '||nvl2(dog_num,'согласно договору №'||dog_num,null)
В чем проблема то? Это неудобно и неприятно?
14 июл 10, 13:11    [9101709]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
vadiminfo
Member

Откуда: Обнинск
Сообщений: 4802
dbms_photoshop
По троичной логике, если неопределенность прибавляется к чему-то, то результат тоже неопределен.

Ну это Вы в троичной логике прибавляете неопределенность к строкам или числам. Однако, это все еще не достаточно распространенная пракатика. Например, операция сложения задана на множестве чисел. И такого элемента как неопределенность в этом множестве нет.
14 июл 10, 13:19    [9101815]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
dbms_photoshop
О, смотрю на 13-й странице та же тема.
Может уже было предложено, но
SergSuper
вот простой пример
допустим есть какая-то выплата, она может быть привязана к какому-то договору, может нет
если привязана надо писать "выплата 100 руб согласно договору №100", если нет - просто "выплата 100 руб"
если бы null не был бы пустой строкой, можно было бы просто написать
'выплата 100 руб '||nvl('согласно договору №'||dog_num, '')
мелочь, но удобно, приятно, облегчает жизнь и не вызывает острого желания выкинуть её нафиг

ну и сейчас, глядя на написанные тексты, я вижу много мест, которые можно было бы несколько упростить
ну пишите так:
select 'выплата 100 руб '||nvl2(dog_num,'согласно договору №'||dog_num,null)
В чем проблема то? Это неудобно и неприятно?
уважаемый, давайте-ка Вы будете повнимательней читать, и поменьше растопыривать пальцы. ок?
больше проблем нет
14 июл 10, 13:52    [9102104]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
dbms_photoshop
Member

Откуда:
Сообщений: 5151
SergSuper
уважаемый, давайте-ка Вы будете повнимательней читать, и поменьше растопыривать пальцы. ок?
больше проблем нет
Я даже не пытался растопыривать пальцы и не собирался никаким боком тебя оскорблять.
Ну раз у ж ты позволяешь себе высказываться в таком духе, то я замечу, что я акцентировал внимание на том, что топик еще целиком не прочел.
И ты в свою очередь читай внимательнее, любезный.
PS Нельзя было просто написать "уже было"?
14 июл 10, 14:27    [9102519]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
dbms_photoshop
Я даже не пытался растопыривать пальцы
значит мне показалось
dbms_photoshop
Фанатичность некоторых участников, конечно, просто зашкаливает...
...смотреть как неглупые вроде люди с пеной у рта несколько страниц обсасывают эту тему - это просто капец!..
...чем демонстрировать свою узколобость...
можно и из других топиков надергать
14 июл 10, 14:37    [9102624]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
iscrafm
Member [заблокирован]

Откуда:
Сообщений: 35345
просто ЧСВ не правильно оценивается.
14 июл 10, 14:41    [9102657]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
iscrafm
Member [заблокирован]

Откуда:
Сообщений: 35345
iscrafm
просто ЧСВ не правильно оценивается.

неправильно
14 июл 10, 14:43    [9102687]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
dbms_photoshop
Member

Откуда:
Сообщений: 5151
SergSuper
dbms_photoshop
Я даже не пытался растопыривать пальцы
значит мне показалось
dbms_photoshop
Фанатичность некоторых участников, конечно, просто зашкаливает...
...смотреть как неглупые вроде люди с пеной у рта несколько страниц обсасывают эту тему - это просто капец!..
...чем демонстрировать свою узколобость...
можно и из других топиков надергать
Ок, постараюсь изменить стиль.
Я хотел сделать акцент на том, что мне одинаково успешно удается разрабатывать и на МС СКЛ и на оракле учитывая указанную особенность со строками. И я считаю её именно особенностью а не недостатком какой либо из этих двух СУБД. Если человеку эта особенность сильно мешает разрабатывать, то, я думаю, ему стоит искать проблему в себе а не в СУБД.
И, скажите, пожалуйста, Вы много новых и свежих мыслей почерпнули со страниц 5-13?
14 июл 10, 15:02    [9102938]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
Favn
Member

Откуда:
Сообщений: 585
Yo.!
а в процедурном sqlpl в db2, что получается в результате конкатинации с нулл ?
А что там может получиться? В DB2 SQL и SQL PL исполняются одним процессом, без внешних VM. Естественно, результат тот же.
CREATE FUNCTION ABCCONCAT( INSTR VARCHAR(8) )
	RETURNS VARCHAR(8)
	NO EXTERNAL ACTION
F1: BEGIN
	RETURN 'ABC' || INSTR;
END
values( SH.ABCCONCAT( '' ) );
1       
--------
ABC

values( SH.ABCCONCAT( NULL ) );
1       
--------
-
14 июл 10, 15:13    [9103085]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
dbms_photoshop
Member

Откуда:
Сообщений: 5151
SergSuper
dbms_photoshop
Фанатичность некоторых участников, конечно, просто зашкаливает...
...смотреть как неглупые вроде люди с пеной у рта несколько страниц обсасывают эту тему - это просто капец!..
...чем демонстрировать свою узколобость...
можно и из других топиков надергать
Надергайте. И с чем Вы не согласны с содержанием или стилем?
Я каждый из приведенных тезисов могу обосновать.
14 июл 10, 15:14    [9103101]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
Favn
Member

Откуда:
Сообщений: 585
vadiminfo
Ну это Вы в троичной логике прибавляете неопределенность к строкам или числам. Однако, это все еще не достаточно распространенная пракатика. Например, операция сложения задана на множестве чисел. И такого элемента как неопределенность в этом множестве нет.

Естественно, неопределенности в самом множестве чисел нет. Иначе она не была бы неопределенностью, которая есть возможность любого значение из этого множества.
А вот в арифметике неопределенность есть - это результат деления на 0, т.к. любое число * 0 = 0.
Точно так же во множестве строк нет неопределенности. А вот пустая строка в нем есть, и это вполне определенное значение, к неопределенности с точки зрения здравого смысла никакого отношения не имеющая. Как и 0 (отсутствие значения) в арифметике.
И любая операция с неопределенностью, даже строковая, обязана возвращать неопределенность, т.к. ее результат по определению не известен.
PS. Ну что Вы, право :) Троичную логику вроде не я придумал :)
14 июл 10, 15:33    [9103371]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
dbms_photoshop
SergSuper
dbms_photoshop
Фанатичность некоторых участников, конечно, просто зашкаливает...
...смотреть как неглупые вроде люди с пеной у рта несколько страниц обсасывают эту тему - это просто капец!..
...чем демонстрировать свою узколобость...
можно и из других топиков надергать
Надергайте. И с чем Вы не согласны с содержанием или стилем?
здесь как бы принято возможности СУБД сравнивать, а не обсуждать мнения относительно участников дискуссии
ну и кроме того мне лично такой стиль общения кажется хамским, но это только моё личное мнение

dbms_photoshop
Я каждый из приведенных тезисов могу обосновать.
это мало кому интересно
14 июл 10, 15:34    [9103391]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
Favn
Member

Откуда:
Сообщений: 585
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 ведет себя как ''?
Люди, знакомые с Ораклом, поможите разобраться, дайте сцылочку! В этой "локике" лично я запутался окончательно.
14 июл 10, 15:45    [9103521]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
ЛП
Guest
Favn
Понятно, что работает это только для varchar, не для char (уже бездна "логики").
Но правильно ли я понял, что '' на самом деле не есть null, а null просто записывается в поле varchar при присваивании ему ''?

Ну, как тут написали, null записывается не только в поле типа varchar (при попытке записи ''), но так же и в поле типа int.
А в поле типа char - нет, не записывается null
Бездна логики (с)

Если '' эквивалентно null (как тут пытались убедить), то почему оно не пишется как null в столбец char(1)?
Если '' не эквивалентно null (несмотря на все здешние убеждения), то почему оно вообще позволяет записать себя в int?
14 июл 10, 16:34    [9104102]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 8 9 10 11 12 [13] 14 15 16 17   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить