powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Все таки Oracle впереди планеты всей!
25 сообщений из 419, страница 9 из 17
Все таки Oracle впереди планеты всей!
    #36729307
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerSergSuperтаки значит есть что компенсировать?

в принципе я согласен, логично было бы например ввести еще какое-нибудь сложение строк которое бы в null всё не превращало,
Ну дык собственно в Oracle оно и введено :) Если же ставить вопрос как "стоит ли вводить две операции сложения строк, одна из которых превращает, другая нет, только ради того, чтобы сэкономить несколько символов в Вашем примере" - я бы наверное сказал таки, что не стоит. Багов будет больше, чем выгоды.нет, мои примеры такого не требовали
softwarerSergSuperто что выкрутиться всегда можно - кто ж с этим спорит
Я бы поспорил, кто "выкручивается". Передавать два значения в двух переменных по мне - нормально, решение по умолчанию, а вот запихивать, как Вы хотите, в одну переменную сразу и признак "значение найдено" и само найденное значение - хакерство, привет из тёмного прошлого, одного уровня с "если возвращается значение < 0, то это не Id, а код ошибки".да тут бесполезно спорить, кто как делает тот так и считает правильным
я вот напишу что аналогия неудачная и логичней когда вся информация о строке в ней и содержится, тем более что возможности для этого предусмотрены, Вы не менее обоснованно ответите

я вот частенько смотрю оракловский код и думаю насколько было проще если бы были нулы как у микрософта, уверен что Вы что-то подобное думаете про микросовтовский

мне такое поведение кажется уж очень очевидно неправильным и было интересно понять тех, кому это кажется нормальным
вроде понял, но "я думаю, Владимир Зенонович, последнее слово будет не за вами" :)
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36729379
Фотография StalkerS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Думаю, мы оба способны выдать немало причин, почему эту задачу не стоило решать таким образом. Собственно, посчитайте сами, сколько натяжек необходимо принять, чтобы счесть это серьёзным примером. Мне бы хватило одного только "тонкого момента" - пустые строки в значении "надо заполнить потом" почему-то есть, а вот для числовых характеристик ничего подобного нет, никакого null/пустой строки не используешь.

да там почти все параметры строковые. Даже размеры могли записываться как 23х67. В крайнем случае существует возможность записать число как строку из цифр. Да и дело тут не в том как "правильно" делать, а в том, что определенный подход становится недоступным. По сути сервер на ровном ограничил меня в выборе альтернатив.
softwarerВо-первых, про "дефолтные значения" тут написано что-то.. имхо вообще не в тему. А вообще - ну дык называйте, смелее. Конкретные примеры. Чем больше, тем лучше. А то ради одного-двух случаев городить огород...

что значит "городить огород", два примера есть, и есть общая формулировка случая. Вам сколько конкретных примеров надо?
В качестве бонуса - согласованое поведение системы, лично мне неудобно, когда система за меня решает что удобно, а что нет. Уж если продолжать мысль, то поведение vb.net в этом смысле более логично - там всем value типам присваивается не-null значение, это плохо, но хотя-бы последовательно
softwarerСущественно отличный от нуля.

кажется вы там страницу назад писали что-то про один проект или около того.. От нуля это конечно существенно отличается, но если занимает только малый процент об общего опыта, то неудивительно что кажется непривычным и "неудобным"
softwarer
Если тип not null, то возможность присвоить ему null и происходящее при этом присвоение некоего "дефолта" - безусловно, плохое решение. Такая возможность иногда полезна, но пользоваться ей следует осознанно, а не "автоматом". В этой части решения я не вижу никакого соответствия обсуждаемой теме, поскольку not null колонке или переменной ни один сервер присвоить null вроде как не позволит.

почему нет соответствия, аналогия очень даже существенная - при присвоении null на самом деле присваивается нечто "не-null", причем в оракле вообще похоже не определить, что именно там присваивалось
softwarer
В null.toString() == "" я в общем-то никакого криминала не вижу, скорее наоборот, полагаю разумным и удобным.

тут не понял, null.toString() вызовет исключение в любом случае по очевидным причинам, разница в компиляторах vb и c# в том, как они реагируют на присваивание null типам, которые не могут быть null
vadiminfo
Я имел в виду что не только в Оракле декомпозиция чаcто применяется для отсутсвующих свойст. Ну действительно, табла со свойствами, которых заведомо нет у сущностей, выглядит как некоея искажение отображения реальности в БД. И констатировал, что это ближе к NULL чем '', если декомпозицию не делать.

никакого искажения реальности нет, есть разные способы отображения реальности в модели. И иметь отсутствующие аттрибуты в таблице сущности вполне можно. И если сервер толкает меня к определенным решениям только на основе технической реализации, то это не есть хорошо
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36729393
sn1251
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerЯ бы сказал так: лучше никакого стандарта, нежели плохой стандарт. Тому, который есть - до хорошего ещё очень далеко. Поэтому я приветствую оправданные отступления от него.

Но стандарты всё-же просачиваются в Оракл.
Давно ль хором декламировали: JOIN, CASE, WITH у нас нет и нахер не нужно
Глядишь и опция CONCAT_NULL_YIELDS_NULL появится.
softwarerМне вот до сих пор интересно, есть ли хоть один сервер, в котором реализована прописанная в стандарте конструкция except (со смыслом ораклового minus).
ещё 1
Код: plaintext
1.
2.
3.
4.
5.
6.
postgres=# select generate_series( 1 , 5 ) except (values( 2 ),( 4 )) order by  1 ;
 generate_series
-----------------
                1 
                3 
                5 
( 3  rows)

З.Ы. по теме:
Да, в некоторых областях оракл впереди всех.
Нет, гордится этим как своим достижением не стоит (даже если ты индус).
Нет, во все дыры пихать оракл нецелесообразно.
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36729428
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sn1251
Но стандарты всё-же просачиваются в Оракл.
Давно ль хором декламировали: JOIN, CASE, WITH у нас нет и нахер не нужно


Собственно я не слышал, чтобы говорилось, что JOIN или рекурсивный WITH не нужны (под предлогом того, что есть legacy конструкции), зато много слышал, что реализация того же JOIN в Oracle 9, к примеру, далека от идеала Кроме того, раньше не понимал, для чего может быть нужен INNER JOIN (серьезно столкнувшись с MySQL понял для чего ). Так что не нужно путать теплое с мягким.
Собственно позиция того о чем Вы говорите складывалась из двух пунктов:

1. 8i - у нас нет JOIN (если склероз не изменил), но мы особо не страдаем, поскольку (+) работает, да и выглядит лаконичнее (имея при этом некоторые ограничения в использовании)
2. 9i - JOIN есть, но работает так хреново, что лучше пользоваться (+)

На мой взгляд, это далеко не "у нас нет и нахер не нужно", да и пользователи других СУБД поступают ровно таким-же образом
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36729429
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев ФёдорМожно можно записать в varchar not null строку '' ?
Можно создать уникальный индекс по полю, где многократно встречаются '' ?


1. нет
2. можно. на пустые строки уникальность распространяться не будет
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36729479
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев ФёдорМожно можно записать в varchar not null строку '' ?
Можно создать уникальный индекс по полю, где многократно встречаются '' ?


Ну вот как бы по моим понятиям, Оракл '' не записывает в таблу, а записал значения отсутсвует null, поскоку запросы на = '' возвращают пустые строки, а на is null возвращают добавленное. Скрипты в ветке приводил.
Поэтому как бы инсерт в колонку varchar not null не долженн пройти. А что до индекса, то поскоку возможность занести '' как в Аксцессе не очевидна, то вопрос луче переформулировать.
Т.е. есть моно считать что в таблах Оракла в полях типа varchar значение '' обнаружить далеко не всем удается после многих попыток исертов и апдэйтов в плане запосов содержащих = '' или там LENGTH(а) = 0.
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36729485
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StalkerSникакого искажения реальности нет, есть разные способы отображения реальности в модели. И иметь отсутствующие аттрибуты в таблице сущности вполне можно. И если сервер толкает меня к определенным решениям только на основе технической реализации, то это не есть хорошо
Разные то они есть, и применить то можно, но нельзя быть довольным токой моделью, скорее всего. Ить это все равно что кмокингу одеть шапку ушанку, я думау. Я вседа честно старюсь говорить коллегам, что если не получилось избежать в модели таких изъянов. Луче этого никада не скрывать, и не делать вид что все хорошо.
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36729494
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев ФёдорМожно можно записать в varchar not null строку '' ?
Нет.

Зайцев ФёдорМожно создать уникальный индекс по полю, где многократно встречаются '' ?
Да.
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36729590
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)Кроме того, раньше не понимал, для чего может быть нужен INNER JOIN
жесть конечно. В принципе понятно, почему те, кто видел только oracle и ничего больше, придерживаются таких странных взглядов, иногда кажущихся со стороны дикими. Ну и естественно все кажется уникальным.

p.s. Gluk (Kazan), Ваша цитата просто как пример. Ничего личного.
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36729643
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmGluk (Kazan)Кроме того, раньше не понимал, для чего может быть нужен INNER JOIN
жесть конечно. В принципе понятно, почему те, кто видел только oracle и ничего больше, придерживаются таких странных взглядов, иногда кажущихся со стороны дикими. Ну и естественно все кажется уникальным.

p.s. Gluk (Kazan), Ваша цитата просто как пример. Ничего личного.

Ага, только ты забыл спросить, почему inner join понадобился в MySQL :)
Это жесть куда большая, поверь
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36729722
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerЗайцев ФёдорМожно можно записать в varchar not null строку '' ?
Нет.

Зайцев ФёдорМожно создать уникальный индекс по полю, где многократно встречаются '' ?
Да.
т.е. в первом случае '' is not null, а во втором - очень даже is null
по-моему, это не совсем очевидно. ввс я не виду причин, по которым должно быть именно так, а не наоборот или ещё как-нибудь по-другому

З.Ы,
я всё ещё на тему наразличимости '' и null
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36729731
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев Фёдор
бредsoftwarerЗайцев ФёдорМожно можно записать в varchar not null строку '' ?

Нет.

Зайцев ФёдорМожно создать уникальный индекс по полю, где многократно встречаются '' ?
Да.
т.е. в первом случае '' is not null, а во втором - очень даже is null
по-моему, это не совсем очевидно. ввс я не виду причин, по которым должно быть именно так, а не наоборот или ещё как-нибудь по-другому

З.Ы,
я всё ещё на тему наразличимости '' и null
пардон, не проснулся.
burn 0,5 рулит
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36729794
ОКТОГЕН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев Фёдор, burn жжот.
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36729897
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sgt.PepperЯ с Вами не совсем согласен, но это спор более мировоззренческий, чем айтишный.
Собственно, именно об этом я и говорил в шутке про сержанта :) Вопрос собственно в том, что "то ли стандарт вводится там, где действительно нужен", то ли "стандарт должен быть всегда, а отступления вводятся там, где действительно нужны". Если позволите, ещё один старый анекдот:

Немецкий фельдфебель взял отпуск и поехал на экскурсию в Париж. Остановился в гостинице, поужинал, поднялся к себе. Наступила ночь. От соседей слева раздалось:

- А-а, а-а.. Жан, любимый, помедленнее, не спеши так, а-а...

Чуть позже от соседей справа раздалось:

- А-а, Пьер, ну что же ты, быстрее, быстрее!, А-А!!

Фельдфебель в бешенстве вскочил, схватил стек, и, стуча поочерёдно в ту и другую стену:

- Все! Слушаю мою команду! Раз-два, раз-два, раз-два!!


Sgt.PepperИзвините, я уже Вам некоторое время назад говорил, что аналогии и аллегории должны иллюстрировать высказанный тезис, а не являться сами по себе основой доказательства чего-то,
Дык и иллюстрирую. Тезис о том, что люди, ездящие по разным дорогам, не особо нуждаются в общем стандарте, и попытка бездумно внести такой и требовать соблюдения "потому что стандарт" влечёт много минусов и мало плюсов.

Sgt.PepperВариант, ненужность которого должны доказать Вы, а не говорить, что "пока что серьезных примеров не приведено - это никому не нужно".
Я могу обосновать ненужность этого варианта, но меня совершенно не устраивает декларируемая Вами постановка вопроса. Мы обсуждаем равноправные вариации некоторой концепции, поэтому доказывать должны в равной степени. Кроме того, я очень прошу не перевирать мои слова: я говорю, что потребность именно в такой реализации крайне редка, и вносимые ей минусы и неудобства несравнимо перевешивают редкие полезные случаи.

А обосновывается, собственно, просто. У человека есть довольно чёткое интуитивное понимание понятия "значение введено / значение не введено", соответствующее is not null / is null. Скажем, для тех же чисел 0, 1, 2, 1.2e8, 238.85(342) - примеры введённых значений, пустота - значение не введено, null. Он с ними удобно и естественно оперирует, как программист так и пользователь. И глядя на поле ввода, где может стоять ноль, а может ничего не стоять, особенно наглядно видна демагогичность предложения отождествить 0 и null.

Для строковых значений действует ровно то же самое восприятие, "Иванов" - значение введено, "" - значение не введено. И да, любой нормальный человек - то есть не-программист - считает, что "Иванов " = "Иванов", а " " = "". Мы пишем программы для людей, они должны вести себя ожидаемым для пользователя образом. Поэтому, пока нет существенных оснований поступать иначе, следует выбирать концепции, соответствующие модели мира, ожиданиям пользователей.

Программист вполне может держать в голове концепцию "есть null (воспринимаемый пользователем как пустота), есть пустая строка (воспринимаемая пользователем опять же как пустота) и есть непустые строки". Но в 99.99% случаев ему просто незачем это делать, это только лишнее неудобство на пустом месте, проявляющееся каждый раз, когда программисту надо сконкатенировать это поле, сджойнить его или получить в него ввод из интерфейсной формы. Реальную потребность в этой концепции лучше всего показывает факт повсеместного отсутствия визуальных компонент, способных наглядно показать пользователю отличные null и пустую строку или дать пользователю выбрать между тем и другим. В тех редких случаях, когда такое требуется, программисты рожают что-нибудь вроде edit-а "Password" с чекбоксом "Password is blank".

Так вот: я утверждаю, что из двух концепций, одна из которых позволяет "один в один" реализовать почти все реальные потребности и с тривиальными доработками - оставшиеся, а другая - требует некоторой работы почти в каждом случае, первая лучше. Потому как при прочих равных делает работу проще, а её результат - качественнее.

Sgt.PepperТак почему бы не пойти по пути осмысленного выбора программистом?
Давайте рассмотрим ситуацию в общем виде. У нас есть несколько вариантов поведения системного объекта. Реализуя объект, мы можем:

1. Обязать явно указывать вариант в каждом месте использования объекта (те альтернативы, которые Вы привели)
2. Обязать явно указывать вариант в каждом месте создания объекта (то есть в create table кроме null / not null указывать отношение к пустым строкам)
3. Выбрать единственный вариант и заставить, когда он не подходит, делать явную доработку руками (как сейчас в Oracle).

Для каждого из этих подходов можно привести примеры, когда он оптимален. На пальцах.. третий вариант оптимален тогда, когда этот выбранный вариант нужен кардинально чаще других. Второй - оптимален по мощи, но предъявляет высокие требования к программисту, довольно легко внести ошибку. Первый - допустим тогда и только тогда, когда выбор преподносится в явном виде (например, как обязательный параметр функции) и оптимален, когда нет явно доминирующего выбора.

Так вот, "осмысленный выбор" в данном контексте не устраивает меня в первую очередь из-за нарушения требования "в явном виде".

Sgt.PepperНу возможно, придется Вам написать пару лишних символов по варианту 2 или 3, которые Вы бы не хотели писать, но зато сохранится возможность для других использовать в конкретном случае конкретный вариант, ... Неужели плата так велика?
Плата здесь - не лишние символы, это мелочь. Плата здесь - это внесённые ошибки. Я видел довольно много технологий, постулировавших "а вот здесь программист должен написать вот так", и, несмотря на все оргмеры, видел кучу ошибок, проистекающих из "программист забыл написать" или "написал не так".

Возвращаясь к примеру с пробелами - можно сделать технологию вроде "программист обязан писать trim() для каждого поля во всех хранимках, вставляющих или обновляющих информацию в таблицах". И гарантированно - будут отлавливаться ошибки. Люди не роботы. Такие вещи надёжны только когда они работают "без участия программиста в каждом конкретном случае".

Sgt.Pepperда и стандарты не нарушим.
Это стоит ещё меньше, чем лишние символы, имхо.
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36729944
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев Фёдорт.е. в первом случае '' is not null, а во втором - очень даже is null
Да нет, в обоих случаях '' is null. Во всяком случае, так следует из написанного. Возможно, Вы подразумевали не то, что написали, конечно :)

Зайцев Фёдорпо-моему, это не совсем очевидно. я всё ещё на тему наразличимости '' и null
Видите ли в чём дело.... они физически неразличимы. У них одно представление в дампе БД. Поэтому найти пример, где они различимы, будет.... непросто
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36729954
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм. а почему именно пустая строка транслируется в null?
Почему не наоборот - null в пустую строку?
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36729976
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lockyХм. а почему именно пустая строка транслируется в null?
Почему не наоборот - null в пустую строку?
меньше писанины, проще код, более логично в современном мире веба.
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36729978
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuperда тут бесполезно спорить, кто как делает тот так и считает правильным
Я не вижу причин всерьёз спорить об этой детали в рамках нашей основной темы. Но и не сказал бы, что бесполезно - вполне себе содержательная тема для "программирования вообще".

SergSuperя вот частенько смотрю оракловский код и думаю насколько было проще если бы были нулы как у микрософта, уверен что Вы что-то подобное думаете про микросовтовский
Дык я, собственно, и прошу привести примеры такого кода, где "насколько бы проще". С nvl/nvl2 уже увидели. Пример nvl vs || я тоже уже привёл.

SergSuperмне такое поведение кажется уж очень очевидно неправильным
Неправильное - это либо "неудобное", либо "удобное, но всё равно неправильное, потому что Иван Иваныч сказал, идеология должна быть другой". Второй вариант - меня не вдохновляет :)
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36730033
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StalkerSДа и дело тут не в том как "правильно" делать, а в том, что определенный подход становится недоступным. По сути сервер на ровном ограничил меня в выборе альтернатив.
(пожимая плечами) Вы не протестуете против того, что тип number представляет только действительные числа и не содержит мнимой части? По сути сервер на ровном месте ограничил Вас в выборе альтернатив.

StalkerSкажется вы там страницу назад писали что-то про один проект или около того..
Я делал проект на MSSQL, несколько раз работал с IB/FB-проектами, немного с MySQL и кроме того, довольно много возился с перекачками данных. При этом я никогда не пытался "приходить со своим уставом в чужой монастырь", каждый раз честно смотрел "как тут принято", пробовал работать именно так и искал ответы на вопрос "почему".

StalkerSто неудивительно что кажется непривычным и "неудобным"
Вы второй раз употребляете слово "кажется", на этот раз не по адресу.

StalkerSпочему нет соответствия, аналогия очень даже существенная - при присвоении null на самом деле присваивается нечто "не-null",
Плюньте в лицо тому, кто Вам сказал такую глупость. В оракле при присвоении null присваивается null. В том числе при присвоении пустой строки присваивается null. Соответственно, аналогия "при присвоении null присваивается не-null" - мягко говоря, неуместна.

StalkerSтут не понял, null.toString() вызовет исключение в любом случае по очевидным причинам,
Ну и плохо. Я уж думал, микрософт не поленился сделать получше.
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36730056
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyХм. а почему именно пустая строка транслируется в null?
Почему не наоборот - null в пустую строку?
Боюсь, это вопрос уже не к нам :) Подозреваю, "в далёкие xxxдесятые годы" это вообще был вопрос больше технической реализации (значение с длиной 0), нежели чистоты идеологии.
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36730061
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerlockyХм. а почему именно пустая строка транслируется в null?
Почему не наоборот - null в пустую строку?
Боюсь, это вопрос уже не к нам :) Подозреваю, "в далёкие xxxдесятые годы" это вообще был вопрос больше технической реализации (значение с длиной 0), нежели чистоты идеологии.
с т.з. технической реализации проще держать именно пустую строку вместо null, нежели наоборот
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36730069
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!lockyХм. а почему именно пустая строка транслируется в null?
Почему не наоборот - null в пустую строку?
меньше писанины, проще код, более логично в современном мире веба.
писанины если не ровно столько же, то меньше
И веба в момент принятия решение не было, тем более - современного.
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36730099
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
locky
писанины если не ровно столько же, то меньше
И веба в момент принятия решение не было, тем более - современного.
когда принимаются решения по критериям логично и удобно, не удивительно, что они совпадают. писанины гораздо меньше, читайте ветку - примеры даны.
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36730127
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockysoftwarerlockyХм. а почему именно пустая строка транслируется в null?
Почему не наоборот - null в пустую строку?
Боюсь, это вопрос уже не к нам :) Подозреваю, "в далёкие xxxдесятые годы" это вообще был вопрос больше технической реализации (значение с длиной 0), нежели чистоты идеологии.
с т.з. технической реализации проще держать именно пустую строку вместо null, нежели наоборот
Меня радует уместная категоричность.

Поясняю: когда проектировали формат хранения, видимо, решили, что каждое значение имеет размер, чаще всего динамический, и соответственно решили хранить как [длина, байт1, байт2, ...]. Null решили хранить как значение длины 0, то есть в файле БД ему соответствует либо один байт (длина = 0), либо вообще ничего (если в конце строки). Когда реализовывали varchar, строку 'abcde', вполне естественно, решили хранить как [5, 'a', 'b', 'c', 'd', 'e']. И в этот момент "совершенно случайно" оказалось, что null и пустая строка хранятся физически одинаково, как [0].

Есть у меня подозрение, что на самом деле примерно так всё и было, а идеологии - дело более позднее.
...
Рейтинг: 0 / 0
Все таки Oracle впереди планеты всей!
    #36730129
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyХм. а почему именно пустая строка транслируется в null?
Почему не наоборот - null в пустую строку?
Ну как же? Значения могут не иметь не тока строуки. Т.е. null более общее для всех типов. Кроме того, оно типа не транслируется, а объявлентся что значения нет. Ну и так по мелочам. Там пустая строека типа похожа на 0 для числовых, но числовые тоже могут не иметь значения, даже 0. Тада если пустая строка отранслировалась сюда, то она не похожа становится на 0. А зачем это надо. Кроме того, пустая строка разными челами по разному понисается: для кого есть такое значение в плане там равенства, а для кого то нет. А с null таких заморочек вроде нет.
...
Рейтинг: 0 / 0
25 сообщений из 419, страница 9 из 17
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Все таки Oracle впереди планеты всей!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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