Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
lockysoftwarerlockyХм. а почему именно пустая строка транслируется в null? Почему не наоборот - null в пустую строку? Боюсь, это вопрос уже не к нам :) Подозреваю, "в далёкие xxxдесятые годы" это вообще был вопрос больше технической реализации (значение с длиной 0), нежели чистоты идеологии. с т.з. технической реализации проще держать именно пустую строку вместо null, нежели наоборот Нет никакого "вместо". Технически это одно и тоже значение. Как правильнее: "держать" A вместо A, или наоборот? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 12:59 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)Нет никакого "вместо". Технически это одно и тоже значение. Похоже, что действительно "техническое", хотя я не знаком глубоко со структурой форматов хранения типов данных в Oracle, но в MS SQL наличие значения NULL в поле определяется не значением поля, а NULL bitmap in row header (1 bit for each column in table; a 1 indicates that the corresponding column is NULL) . И для полей переменной длины место на странице данных в таком случае не выделяется. ЗЫ. М.б. именно поэтому, для MS SQL '' и NULL - 'две большие разницы'. ЗЫЗЫ. По этой же причине в MS SQL поле с типом данных bit, занимаемое 1бит на странице данных может иметь 3ри значения - 0, 1 и NULL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 13:14 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Что до отношения Оракла к пустым сторкам, то вот из справки. Oracle Database currently treats a character value with a length of zero as null. However, this may not continue to be true in future releases, and Oracle recommends that you do not treat empty strings the same as nulls. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 13:49 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
softwarerlockysoftwarerlockyХм. а почему именно пустая строка транслируется в null? Почему не наоборот - null в пустую строку? Боюсь, это вопрос уже не к нам :) Подозреваю, "в далёкие xxxдесятые годы" это вообще был вопрос больше технической реализации (значение с длиной 0), нежели чистоты идеологии. с т.з. технической реализации проще держать именно пустую строку вместо null, нежели наоборот Меня радует уместная категоричность. Поясняю: когда проектировали формат хранения, видимо, решили, что каждое значение имеет размер, чаще всего динамический, и соответственно решили хранить как [длина, байт1, байт2, ...]. Null решили хранить как значение длины 0, то есть в файле БД ему соответствует либо один байт (длина = 0), либо вообще ничего (если в конце строки). Когда реализовывали varchar, строку 'abcde', вполне естественно, решили хранить как [5, 'a', 'b', 'c', 'd', 'e']. И в этот момент "совершенно случайно" оказалось, что null и пустая строка хранятся физически одинаково, как [0]. Есть у меня подозрение, что на самом деле примерно так всё и было, а идеологии - дело более позднее. про null bitmap уже написали что касается же тех. реализации... как мне кажетсо, для разработчиков было бы проще оперерировать именно со строками нулевой длины, нежели со строками, которые могут быть null оракл вроде как на сях писаный, не? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 13:54 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
locky как мне кажетсо, для разработчиков было бы проще оперерировать именно со строками нулевой длины, нежели со строками, которые могут быть null оракл вроде как на сях писаный, не? Сие не зависит от языка, а исключительно от разработчиков. MS SQL скорее всего тоже на сях написан (а уж Firebird - наверняка), что им не мешает корректно различать NULL и пустую строку. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 14:10 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov locky как мне кажетсо, для разработчиков было бы проще оперерировать именно со строками нулевой длины, нежели со строками, которые могут быть null оракл вроде как на сях писаный, не? Сие не зависит от языка, а исключительно от разработчиков. MS SQL скорее всего тоже на сях написан (а уж Firebird - наверняка), что им не мешает корректно различать NULL и пустую строку. Значит в команде разработчиков Оракла, видимо, человек, ответственный за реализацию строковых данных был несколько.. Инако? Альтернативно? Мыслящ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 14:17 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
lockyпро null bitmap уже написали null bitmap mssql-я никак не связан с техническими удобствами разработчиков Oracle. lockyкак мне кажетсо, для разработчиков было бы проще оперерировать именно со строками нулевой длины, нежели со строками, которые могут быть null Я полагаю, что это далеко не факт (для примера можно, скажем, упомянуть о необходимости контролировать ограничение на длину varchar-переменных), и совершенно уверен, что представление об "оперировать", возникающее сейчас, кардинально отличается от того, что было в первых ораклах в семидесятых годах, когда не было ни PL/SQL, ни большей части возможностей SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 14:23 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
lockyЗначит в команде разработчиков Оракла, видимо, человек, ответственный за реализацию строковых данных был несколько.. Инако? Альтернативно? Мыслящ. Вообще-то Oracle изначально был написан на ассемблере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 14:25 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
какая хорошая философская темка )) И про FB и пустые строки. Я про пустые строки. Совершенно очевидно, что Oracle сегодня, скажем урощённо, лучшая субд. И всё же. Совершенно очевидно, что считать пустую строку как NULL не правильно. Так же не правильно как и считать строку с пробелом тоже как NULL. NULL - значение не задано (возможно, потому что неизвестно). '' - пустая строка и при конкатенации с другимим строкаим должна выдавать ожидаемый результат, а не NULL. В-третьих как уже было сказано в теме, соверешенно очевидно, что любые операции с NULL должны приводить к исключению, а не к NULL. Это же, #####, совершенно очевидно! Считаю, если пользователь имеет ВОЗМОЖНОСТЬ вводить в адрес всякий мусор, типа пустых строк, пробелов и т.п., то в первую очередь ВИНОВАТ РАЗРАБОТЧИК ПО. Есно идеальных систем всё проверяющих не существует, но к ним стремятся. А идеальная система - это что? "Это система, которая не позволяет пользователю ошибаться" (слова не мои). PS не нравится писать IS NULL OR =''? А трим по пробелам от всей строки на пустую строку чего не проверяете для полной кошерности? А чек-констреинты зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 14:41 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
web_foxИ всё же. Совершенно очевидно, что считать пустую строку как NULL не правильно. Как говаривал один мой мудрый друг, "если попробовать доказать очевидный факт - он часто становится вовсе не очевидным, а иногда - вовсе и не фактом". web_fox'' - пустая строка и при конкатенации с другимим строкаим должна выдавать ожидаемый результат, а не NULL. А она у кого-то выдаёт null? Выбросьте бяку. web_foxВ-третьих как уже было сказано в теме, соверешенно очевидно, что любые операции с NULL должны приводить к исключению, а не к NULL. Это же, #####, совершенно очевидно! Особенно операция join on (a.id = b.id) web_foxСчитаю, если пользователь имеет ВОЗМОЖНОСТЬ вводить в адрес всякий мусор, типа пустых строк, пробелов и т.п., то в первую очередь ВИНОВАТ РАЗРАБОТЧИК ПО. Безусловно. Далее, "хорошая среда разработки" - та, которая помогает разработчику легко и правильно решать актуальные задачи, "плохая" - та, в которой ему надо предпринимать кучу дополнительных действий для хорошего решения той же задачи. web_foxА идеальная система - это что? "Это система, которая не позволяет пользователю ошибаться" (слова не мои). Хорошая фраза. web_foxPS не нравится писать IS NULL OR =''? А трим по пробелам от всей строки на пустую строку чего не проверяете для полной кошерности? Нормальные люди - проверяют. Точнее, нормальные люди trim()-ают строки на уровне фреймворка, благодаря чему "строки из пробелов" отсекаются проверкой на not null, что серверной, что клиентской. web_foxА чек-констреинты зачем? Для реализации относительно сложных и нестандартных проверок, которые не реализуются более простыми средствами. Скажем, можно написать check (field is not null), но нормальные люди используют для этого not null в декларации поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 15:06 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
web_fox Совершенно очевидно, что считать пустую строку как NULL не правильно. Так же не правильно как и считать строку с пробелом тоже как NULL. Все же это не совсем удачное сравнение. Пробелы - не пустая строка, не претендует чтобы ее считать NULL. Ну, действительно отсутсвие значение похоже на пустую строку, потому что последняя тоже не имеет каког-либо значения. А пробелы мы просто не видим, но их таки можно нарисовать. Поэтому если второе не правильно, но из этого нельзя, скорее всего, вывести, что первое не правильно: отсутсвие и пустота так или иначе присущи обоим из первого, но не второго утвержденния. Сам термин "правильно" означает соответсвовать каким-то правилам. Но о каких правитлах здесь речь? Скорее пока здесь можно вечти речь о более рациональном и не рациональном. По крайней мере, из того что здесь было ранее сказано. web_fox NULL - значение не задано (возможно, потому что неизвестно). '' - пустая строка и при конкатенации с другимим строкаим должна выдавать ожидаемый результат, а не NULL. Так она вролде и выдает Код: plaintext 1. Код: plaintext 1. web_fox В-третьих как уже было сказано в теме, соверешенно очевидно, что любые операции с NULL должны приводить к исключению, а не к NULL. Это же, #####, совершенно очевидно! Но разве не был прав Каперник когда пошел против очевидности (очевидно было что земля стоит на месте, а он сказал что крутится). Шуткэ. Вот операции с NULL могут быть разными. Например, сравнение с NULL может возвращать НЕ известено что. В общем исключения совсем не очевидны: их и так полно. web_fox Считаю, если пользователь имеет ВОЗМОЖНОСТЬ вводить в адрес всякий мусор, типа пустых строк, пробелов и т.п., то в первую очередь ВИНОВАТ РАЗРАБОТЧИК ПО. Есно идеальных систем всё проверяющих не существует, но к ним стремятся. А идеальная система - это что? "Это система, которая не позволяет пользователю ошибаться" (слова не мои). Он и может и вводит. Ну виноватых искать это как бы другое. Это пусть они там сами разираются как хотят. А то мы с Вами счас понапишем и бум сами во всем виноваты потом. web_fox PS не нравится писать IS NULL OR =''? А трим по пробелам от всей строки на пустую строку чего не проверяете для полной кошерности? А чек-констреинты зачем? Не нравится пол дела. Не нравится, что не сразу понял, что это надо писать. Вот тока вчера в Аксцессе запрос, который много лет как использовался, вдруг выдал ноль записей на IS NULL, на = '' все записи таблы. О как блин. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 15:17 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
не то скопировал Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 15:19 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 15:53 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 16:00 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
vadiminfoне то скопировал Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Ну это дико, конечно. Написав по-человечески, получаем: 1 плюс <низвестно что> равняется 1. Рациональное мышление говорит, что так не бывает. Говоря техническим жаргоном, - это "КОСТЫЛЬ" в прямом его проявлении. А вот это верно: PostgreSQL 8.4.2 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-44), 32-bit авторSELECT '1 from dual' || NULL ---- NULL Всё чётко, с точки зрения значения. Но. Так это явно ошибка в бизнес-логике. И должно быть исключение, чтобы программист перепроекторовал программу и сложение с <неизвестно чем> не применялось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 16:08 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
А, как всенепременно известно, "костыль" рано или поздно "вылазит". И тут ничинается. Кто-то уславливается, что будем писать пробел, если "действительно пустая строка", кто-то два дефиса, кто-то по другому - как фантазия позволяет, у каждого свои "спец-символы". Особенно это развито в веб-программировании с пустым значением в теге select. Так костыли начинают плодится и размножаться, потому, что если есть костыль в одном месте, нужно компенсировать его в другом - если NULL и '' одинаковые, то нужен ещё костыль - конкатенация не приводит к NULL(!). Любое исключение из правил порождает ещё пачку дополнительных исключений из правил. "Костыль" сегодня не вылез - повезло, будем писать так и дальше. Например, в PHP костыли вылазят часто. В Oracle чуть реже, но это всё равно "костыль". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 16:26 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
web_fox Ну это дико, конечно. Написав по-человечески, получаем: 1 плюс <низвестно что> равняется 1. дико это путать конкотенацию с арифметическими операциями. конкатинировать пустую строку и не получать нулл в результе это удобно и логично. а вот придумывать идиотские предназначения пустой строке, аля БОМЖ, ведет к неверной интепритации тех кому приходиться иметь дело с системой в последствии и соответственно к багам. думаю развитие веба в конце концов вытеснит искуственные попытки разделить нулл и пустую строку и будет очередная фишка оракла стандартом де факто, как это уже не раз случалось в истории. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 17:00 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Yo.!думаю развитие веба в конце концов вытеснит искуственные попытки разделить нулл и пустую строку и будет очередная фишка оракла стандартом де факто, как это уже не раз случалось в истории. И для кого, интересно, vadiminfo выкладывал цитату из документации по Oracle... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 17:12 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
pkarklinИ для кого, интересно, vadiminfo выкладывал цитату из документации по Oracle... Эта цитата присутствует в документации минимум 15 лет. Вполне вероятно, будет присутствовать и тогда, когда стандарт наконец перепишут в соответствии со здравым смыслом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 17:15 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
pkarklin И для кого, интересно, vadiminfo выкладывал цитату из документации по Oracle... точно не для меня, в отличие от большинства спорящих тут я оракловую документацию прочел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 17:18 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Yo.! дико это путать конкотенацию с арифметическими операциями. Не понял. Уточните, кто где что путает и причём тут я. Только содержательно, пожалуйста, чтобы чётко было понятно где такое произошло. Yo.! конкатинировать пустую строку и не получать нулл в результе это удобно и логично. Это костыль, который понадобился, из-за совпадения пустой строки с NULL. Не путайте следствие и причину. Yo.! а вот придумывать предназначения пустой строке, аля БОМЖ, ведет к неверной интепритации тех кому приходиться иметь дело с системой в последствии и соответственно к багам. Заменять отсутствие адреса пустой строкой - плохое проектирование. Здесь согласен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 17:29 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Yo.!думаю развитие веба в конце концов вытеснит искуственные попытки разделить нулл и пустую строку и будет очередная фишка оракла стандартом де факто, как это уже не раз случалось в истории. Костыль, который применяется в вебе, поможет ораклу, у которого такой же костыль. А что, логично, блин! 8-/ А действительно, пришло из гет-запроса NULL - что это, строка NULL или значение NULL? Логично, ничего не скажешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 17:47 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
web_fox Не понял. Уточните, кто где что путает и причём тут я. Только содержательно, пожалуйста, чтобы чётко было понятно где такое произошло. "Написав по-человечески, получаем: 1 плюс <низвестно что> равняется 1." - вот тут вы путаете арфметическую операцию сложения, которая нигде не даст единицу, с конкотинацией строк, работу которой в оракле вам расжевывали. web_foxЭто костыль, который понадобился, из-за совпадения пустой строки с NULL. Не путайте следствие и причину. путаете только вы, реально же для людей такое поведение не кажется логичным, поэтому вы не найдете в гуе варианта где можно было представить оба этих понятия. люди не поймут им так не удобно. отсюда и гора ошибок регулярно приходиться правит в мсскл, когда в письмах исчезают целые абзацы потому что очередной новичек забыл перед конкотенации проверить на нулл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 17:49 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Yo.!думаю развитие веба в конце концов вытеснит искуственные попытки разделить нулл и пустую строкуну если не веба, то сельского хозяйства. и если не развитие, то хотя бы спад Yo.! и будет очередная фишка оракла стандартом де факто, как это уже не раз случалось в истории. или не будет, как уже случалось в истории. или не будет такой фишки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 17:59 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Yo.!думаю развитие веба в конце концов вытеснит искуственные попытки разделить нулл и пустую строку и будет очередная фишка оракла стандартом де факто, как это уже не раз случалось в истории.врядли - в MS SQL 4.2 тоже было как сейчас в оракле, но вовремя сумели перейти отсюда и остался атавизм set ansi_null ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 18:15 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=36730466&tid=1552783]: |
0ms |
get settings: |
5ms |
get forum list: |
7ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
24ms |
get topic data: |
5ms |
get forum data: |
1ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 290ms |

| 0 / 0 |
