Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
softwarerSergSuperтаки значит есть что компенсировать? в принципе я согласен, логично было бы например ввести еще какое-нибудь сложение строк которое бы в null всё не превращало, Ну дык собственно в Oracle оно и введено :) Если же ставить вопрос как "стоит ли вводить две операции сложения строк, одна из которых превращает, другая нет, только ради того, чтобы сэкономить несколько символов в Вашем примере" - я бы наверное сказал таки, что не стоит. Багов будет больше, чем выгоды.нет, мои примеры такого не требовали softwarerSergSuperто что выкрутиться всегда можно - кто ж с этим спорит Я бы поспорил, кто "выкручивается". Передавать два значения в двух переменных по мне - нормально, решение по умолчанию, а вот запихивать, как Вы хотите, в одну переменную сразу и признак "значение найдено" и само найденное значение - хакерство, привет из тёмного прошлого, одного уровня с "если возвращается значение < 0, то это не Id, а код ошибки".да тут бесполезно спорить, кто как делает тот так и считает правильным я вот напишу что аналогия неудачная и логичней когда вся информация о строке в ней и содержится, тем более что возможности для этого предусмотрены, Вы не менее обоснованно ответите я вот частенько смотрю оракловский код и думаю насколько было проще если бы были нулы как у микрософта, уверен что Вы что-то подобное думаете про микросовтовский мне такое поведение кажется уж очень очевидно неправильным и было интересно понять тех, кому это кажется нормальным вроде понял, но "я думаю, Владимир Зенонович, последнее слово будет не за вами" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 01:43 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
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 чем '', если декомпозицию не делать. никакого искажения реальности нет, есть разные способы отображения реальности в модели. И иметь отсутствующие аттрибуты в таблице сущности вполне можно. И если сервер толкает меня к определенным решениям только на основе технической реализации, то это не есть хорошо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 04:25 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
softwarerЯ бы сказал так: лучше никакого стандарта, нежели плохой стандарт. Тому, который есть - до хорошего ещё очень далеко. Поэтому я приветствую оправданные отступления от него. Но стандарты всё-же просачиваются в Оракл. Давно ль хором декламировали: JOIN, CASE, WITH у нас нет и нахер не нужно Глядишь и опция CONCAT_NULL_YIELDS_NULL появится. softwarerМне вот до сих пор интересно, есть ли хоть один сервер, в котором реализована прописанная в стандарте конструкция except (со смыслом ораклового minus). ещё 1 Код: plaintext 1. 2. 3. 4. 5. 6. З.Ы. по теме: Да, в некоторых областях оракл впереди всех. Нет, гордится этим как своим достижением не стоит (даже если ты индус). Нет, во все дыры пихать оракл нецелесообразно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 05:43 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
sn1251 Но стандарты всё-же просачиваются в Оракл. Давно ль хором декламировали: JOIN, CASE, WITH у нас нет и нахер не нужно Собственно я не слышал, чтобы говорилось, что JOIN или рекурсивный WITH не нужны (под предлогом того, что есть legacy конструкции), зато много слышал, что реализация того же JOIN в Oracle 9, к примеру, далека от идеала Кроме того, раньше не понимал, для чего может быть нужен INNER JOIN (серьезно столкнувшись с MySQL понял для чего ). Так что не нужно путать теплое с мягким. Собственно позиция того о чем Вы говорите складывалась из двух пунктов: 1. 8i - у нас нет JOIN (если склероз не изменил), но мы особо не страдаем, поскольку (+) работает, да и выглядит лаконичнее (имея при этом некоторые ограничения в использовании) 2. 9i - JOIN есть, но работает так хреново, что лучше пользоваться (+) На мой взгляд, это далеко не "у нас нет и нахер не нужно", да и пользователи других СУБД поступают ровно таким-же образом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 08:00 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Зайцев ФёдорМожно можно записать в varchar not null строку '' ? Можно создать уникальный индекс по полю, где многократно встречаются '' ? 1. нет 2. можно. на пустые строки уникальность распространяться не будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 08:02 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Зайцев ФёдорМожно можно записать в varchar not null строку '' ? Можно создать уникальный индекс по полю, где многократно встречаются '' ? Ну вот как бы по моим понятиям, Оракл '' не записывает в таблу, а записал значения отсутсвует null, поскоку запросы на = '' возвращают пустые строки, а на is null возвращают добавленное. Скрипты в ветке приводил. Поэтому как бы инсерт в колонку varchar not null не долженн пройти. А что до индекса, то поскоку возможность занести '' как в Аксцессе не очевидна, то вопрос луче переформулировать. Т.е. есть моно считать что в таблах Оракла в полях типа varchar значение '' обнаружить далеко не всем удается после многих попыток исертов и апдэйтов в плане запосов содержащих = '' или там LENGTH(а) = 0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 09:14 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
StalkerSникакого искажения реальности нет, есть разные способы отображения реальности в модели. И иметь отсутствующие аттрибуты в таблице сущности вполне можно. И если сервер толкает меня к определенным решениям только на основе технической реализации, то это не есть хорошо Разные то они есть, и применить то можно, но нельзя быть довольным токой моделью, скорее всего. Ить это все равно что кмокингу одеть шапку ушанку, я думау. Я вседа честно старюсь говорить коллегам, что если не получилось избежать в модели таких изъянов. Луче этого никада не скрывать, и не делать вид что все хорошо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 09:20 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Зайцев ФёдорМожно можно записать в varchar not null строку '' ? Нет. Зайцев ФёдорМожно создать уникальный индекс по полю, где многократно встречаются '' ? Да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 09:28 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)Кроме того, раньше не понимал, для чего может быть нужен INNER JOIN жесть конечно. В принципе понятно, почему те, кто видел только oracle и ничего больше, придерживаются таких странных взглядов, иногда кажущихся со стороны дикими. Ну и естественно все кажется уникальным. p.s. Gluk (Kazan), Ваша цитата просто как пример. Ничего личного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 10:18 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
iscrafmGluk (Kazan)Кроме того, раньше не понимал, для чего может быть нужен INNER JOIN жесть конечно. В принципе понятно, почему те, кто видел только oracle и ничего больше, придерживаются таких странных взглядов, иногда кажущихся со стороны дикими. Ну и естественно все кажется уникальным. p.s. Gluk (Kazan), Ваша цитата просто как пример. Ничего личного. Ага, только ты забыл спросить, почему inner join понадобился в MySQL :) Это жесть куда большая, поверь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 10:37 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
softwarerЗайцев ФёдорМожно можно записать в varchar not null строку '' ? Нет. Зайцев ФёдорМожно создать уникальный индекс по полю, где многократно встречаются '' ? Да. т.е. в первом случае '' is not null, а во втором - очень даже is null по-моему, это не совсем очевидно. ввс я не виду причин, по которым должно быть именно так, а не наоборот или ещё как-нибудь по-другому З.Ы, я всё ещё на тему наразличимости '' и null ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 10:58 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Зайцев Фёдор бредsoftwarerЗайцев ФёдорМожно можно записать в varchar not null строку '' ? Нет. Зайцев ФёдорМожно создать уникальный индекс по полю, где многократно встречаются '' ? Да. т.е. в первом случае '' is not null, а во втором - очень даже is null по-моему, это не совсем очевидно. ввс я не виду причин, по которым должно быть именно так, а не наоборот или ещё как-нибудь по-другому З.Ы, я всё ещё на тему наразличимости '' и null пардон, не проснулся. burn 0,5 рулит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 11:02 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Зайцев Фёдор, burn жжот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 11:24 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
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да и стандарты не нарушим. Это стоит ещё меньше, чем лишние символы, имхо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 11:49 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Зайцев Фёдорт.е. в первом случае '' is not null, а во втором - очень даже is null Да нет, в обоих случаях '' is null. Во всяком случае, так следует из написанного. Возможно, Вы подразумевали не то, что написали, конечно :) Зайцев Фёдорпо-моему, это не совсем очевидно. я всё ещё на тему наразличимости '' и null Видите ли в чём дело.... они физически неразличимы. У них одно представление в дампе БД. Поэтому найти пример, где они различимы, будет.... непросто ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 11:58 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Хм. а почему именно пустая строка транслируется в null? Почему не наоборот - null в пустую строку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 12:00 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
lockyХм. а почему именно пустая строка транслируется в null? Почему не наоборот - null в пустую строку? меньше писанины, проще код, более логично в современном мире веба. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 12:05 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
SergSuperда тут бесполезно спорить, кто как делает тот так и считает правильным Я не вижу причин всерьёз спорить об этой детали в рамках нашей основной темы. Но и не сказал бы, что бесполезно - вполне себе содержательная тема для "программирования вообще". SergSuperя вот частенько смотрю оракловский код и думаю насколько было проще если бы были нулы как у микрософта, уверен что Вы что-то подобное думаете про микросовтовский Дык я, собственно, и прошу привести примеры такого кода, где "насколько бы проще". С nvl/nvl2 уже увидели. Пример nvl vs || я тоже уже привёл. SergSuperмне такое поведение кажется уж очень очевидно неправильным Неправильное - это либо "неудобное", либо "удобное, но всё равно неправильное, потому что Иван Иваныч сказал, идеология должна быть другой". Второй вариант - меня не вдохновляет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 12:06 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
StalkerSДа и дело тут не в том как "правильно" делать, а в том, что определенный подход становится недоступным. По сути сервер на ровном ограничил меня в выборе альтернатив. (пожимая плечами) Вы не протестуете против того, что тип number представляет только действительные числа и не содержит мнимой части? По сути сервер на ровном месте ограничил Вас в выборе альтернатив. StalkerSкажется вы там страницу назад писали что-то про один проект или около того.. Я делал проект на MSSQL, несколько раз работал с IB/FB-проектами, немного с MySQL и кроме того, довольно много возился с перекачками данных. При этом я никогда не пытался "приходить со своим уставом в чужой монастырь", каждый раз честно смотрел "как тут принято", пробовал работать именно так и искал ответы на вопрос "почему". StalkerSто неудивительно что кажется непривычным и "неудобным" Вы второй раз употребляете слово "кажется", на этот раз не по адресу. StalkerSпочему нет соответствия, аналогия очень даже существенная - при присвоении null на самом деле присваивается нечто "не-null", Плюньте в лицо тому, кто Вам сказал такую глупость. В оракле при присвоении null присваивается null. В том числе при присвоении пустой строки присваивается null. Соответственно, аналогия "при присвоении null присваивается не-null" - мягко говоря, неуместна. StalkerSтут не понял, null.toString() вызовет исключение в любом случае по очевидным причинам, Ну и плохо. Я уж думал, микрософт не поленился сделать получше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 12:21 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
lockyХм. а почему именно пустая строка транслируется в null? Почему не наоборот - null в пустую строку? Боюсь, это вопрос уже не к нам :) Подозреваю, "в далёкие xxxдесятые годы" это вообще был вопрос больше технической реализации (значение с длиной 0), нежели чистоты идеологии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 12:27 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
softwarerlockyХм. а почему именно пустая строка транслируется в null? Почему не наоборот - null в пустую строку? Боюсь, это вопрос уже не к нам :) Подозреваю, "в далёкие xxxдесятые годы" это вообще был вопрос больше технической реализации (значение с длиной 0), нежели чистоты идеологии. с т.з. технической реализации проще держать именно пустую строку вместо null, нежели наоборот ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 12:28 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Yo.!lockyХм. а почему именно пустая строка транслируется в null? Почему не наоборот - null в пустую строку? меньше писанины, проще код, более логично в современном мире веба. писанины если не ровно столько же, то меньше И веба в момент принятия решение не было, тем более - современного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 12:30 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
locky писанины если не ровно столько же, то меньше И веба в момент принятия решение не было, тем более - современного. когда принимаются решения по критериям логично и удобно, не удивительно, что они совпадают. писанины гораздо меньше, читайте ветку - примеры даны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 12:38 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
lockysoftwarerlockyХм. а почему именно пустая строка транслируется в null? Почему не наоборот - null в пустую строку? Боюсь, это вопрос уже не к нам :) Подозреваю, "в далёкие xxxдесятые годы" это вообще был вопрос больше технической реализации (значение с длиной 0), нежели чистоты идеологии. с т.з. технической реализации проще держать именно пустую строку вместо null, нежели наоборот Меня радует уместная категоричность. Поясняю: когда проектировали формат хранения, видимо, решили, что каждое значение имеет размер, чаще всего динамический, и соответственно решили хранить как [длина, байт1, байт2, ...]. Null решили хранить как значение длины 0, то есть в файле БД ему соответствует либо один байт (длина = 0), либо вообще ничего (если в конце строки). Когда реализовывали varchar, строку 'abcde', вполне естественно, решили хранить как [5, 'a', 'b', 'c', 'd', 'e']. И в этот момент "совершенно случайно" оказалось, что null и пустая строка хранятся физически одинаково, как [0]. Есть у меня подозрение, что на самом деле примерно так всё и было, а идеологии - дело более позднее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 12:47 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
lockyХм. а почему именно пустая строка транслируется в null? Почему не наоборот - null в пустую строку? Ну как же? Значения могут не иметь не тока строуки. Т.е. null более общее для всех типов. Кроме того, оно типа не транслируется, а объявлентся что значения нет. Ну и так по мелочам. Там пустая строека типа похожа на 0 для числовых, но числовые тоже могут не иметь значения, даже 0. Тада если пустая строка отранслировалась сюда, то она не похожа становится на 0. А зачем это надо. Кроме того, пустая строка разными челами по разному понисается: для кого есть такое значение в плане там равенства, а для кого то нет. А с null таких заморочек вроде нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2010, 12:47 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=36729428&tid=1552783]: |
0ms |
get settings: |
4ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
32ms |
get topic data: |
5ms |
get forum data: |
1ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 306ms |

| 0 / 0 |
