Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
вообще интересно как в ANSI SQL было продавлено именно такой бредовый подход к нулам ? C# - на конкатинацию с нулом выдает пустую строку Java - на конкатинацию с нулом конкатинирует со строкой "null" php - на конкатинацию с нулом конкатинирует с пустой строкой т.е. все языки так или иначе выдают строку и только писающий против ветра ANSI SQL ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2010, 13:45 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
2 Yo.! C# - на конкатинацию с нулом выдает пустую строку Правда что-ли? А мужики то и не знают Уж кто кто, а C# в этом отношении ведёт себя как говно, простите. Сложение числа с null'ом даёт null, а конкатенация строки с нуллом даёт исходную строку. т.е. все языки так или иначе выдают строку За все то языки не говори. Вон, VB (который не дотнетовский), "строка" + null даёт в результате null Там правда есть и другая конкатенация, у которой "строка" & null даёт в результате "строка" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2010, 14:05 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
ЛП Уж кто кто, а C# в этом отношении ведёт себя как говно, простите. Сложение числа с null'ом даёт null, а конкатенация строки с нуллом даёт исходную строку. да, чего-то я уйню спорол, конечно поведение точно такое же как у оракла ну так где же все таки костыль ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2010, 14:15 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Вдогонку Yo.!C# - на конкатинацию с нулом выдает пустую строку Если бы C# вёл себя хотя бы так (выдавал или пустую строку, или как и положено null), то не приходилось бы вылавливать тараканов подобных таким: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2010, 14:18 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
ЛПконкатенация строки с нуллом даёт исходную строку. а как выглядит пример, демонстрирующий данное поведение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2010, 14:25 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Зайцев ФёдорЛПконкатенация строки с нуллом даёт исходную строку. а как выглядит пример, демонстрирующий данное поведение? MessageBox.Show("строка" + null); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2010, 14:28 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
ЛПЗайцев ФёдорЛПконкатенация строки с нуллом даёт исходную строку. а как выглядит пример, демонстрирующий данное поведение? MessageBox.Show("строка" + null); а это ничего, что в случае с целыми числами вы проверяете используется Nullable<>.ToString(), а со строками - нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2010, 14:35 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Зайцев ФёдорЛПЗайцев ФёдорЛПконкатенация строки с нуллом даёт исходную строку. а как выглядит пример, демонстрирующий данное поведение? MessageBox.Show("строка" + null); а это ничего, что в случае с целыми числами вы проверяете используется Nullable<>.ToString(), а со строками - нет? Нет, ничего. Строка и сама по себе вполне Nullable, использовать нулябельную обёртку нет необходимости. А как оно вообще к делу относится? По-моему никак. Число (хоть нулябельное Nullable<Int32>, хоть ненулябельное Int32) плюс нулл даёт нулл Строка плюс нулл даёт строку. Что и было написано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2010, 14:52 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
ЛП Нет, ничего. Строка и сама по себе вполне Nullable, использовать нулябельную обёртку нет необходимости. А как оно вообще к делу относится? По-моему никак. Число (хоть нулябельное Nullable<Int32>, хоть ненулябельное Int32) плюс нулл даёт нулл Строка плюс нулл даёт строку. Что и было написано. не совсем понимаю, почему стандарт ANSI SQL должен быть применим к ссылочным типам. м.б. их и сравнивать нужно по тем же правилам и результатом ("строка" == null) должно быть null ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2010, 15:12 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Зайцев Фёдорне совсем понимаю, почему стандарт ANSI SQL должен быть применим к ссылочным типам. Это к Yo вопрос. Он начал сравнивать ANSI SQL и другие языки программирования м.б. их и сравнивать нужно по тем же правилам и результатом ("строка" == null) должно быть null ? Кто мешает? В том же самом VB для определения, нулл чтото или не нулл - была конструкция IsNull(чтото) Сравнение же с нуллом давало нулл. Как и положено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2010, 15:16 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Yo.!вообще интересно как в ANSI SQL было продавлено именно такой бредовый подход к нулам?Собрались умные люди и сделали единый логичный подход к любому неопределенному значению, вне зависимости от его типа. А Ораклу, как обычно, стандарты побоку, он выше этого. Ему свои баги дороже. Yo.!C# - на конкатинацию с нулом выдает пустую строку Java - на конкатинацию с нулом конкатинирует со строкой "null" php - на конкатинацию с нулом конкатинирует с пустой строкой т.е. все языки так или иначе выдают строку и только писающий против ветра ANSI SQL ...Yo.!да, чего-то я уйню спорол, конечно поведение точно такое же как у ораклаДа уж, всем уйням - уйня. Какая связь может быть между неназначенной ссылкой (пустым пойнтером) в процедурных ЯП и NULL значением в декларативном SQL? Это совершенно разные механизмы в принципиально разных языках. Или если буковки названия совпадают, и смысл должен быть тем же? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2010, 15:44 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
web_foxВ oracle костылики и на этот случай есть, например, DECODE работает как (NULL=NULL)=TRUEЯ писал про логические операции, а при использовании decode никаких логических операций. И уж в случае с decode такое использование null крайне удобно (и отрицательных сторон я не знаю). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2010, 15:45 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyТут вы ошиблись уже в первом своем выводе, так как в Oracle ('' <> '' ) = NULL и соответственно все остальные логические операции с NULL тоже дают NULL.Отлично, тут что совой об пенек, что пеньком об сову... ('' = '') д.б. true, а ('' <> '' ) - false, так как это вполне определенные значения (пустые), вполне поддающиеся сравнению на тождественность. Никакой неопределенности, которая есть NULL, при этом не возникает. То есть, если я Вас правильно понял, '' принимается равной NULL, а строковый NULL равным '' не принимается? Да уж, железная логика... Кстати, раз '' принимается как NULL, в Оракле в столбец varchar() not null пустые строки заносить нельзя? Если так, это приведет к еще большей путанице при миграции. Полная жесть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2010, 15:54 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Favn Кстати, раз '' принимается как NULL, в Оракле в столбец varchar() not null пустые строки заносить нельзя? Если так, это приведет к еще большей путанице при миграции. Угу, нельзя. Но никакой путаницы нет. Один раз получил ошибку в лоб и тут же побежал снимать not null атрибут со всех строковых полей. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2010, 15:59 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Bogdanov Andrey, Кстати, совсем забыл о конкатенации. Получается, что в операциях сравнения NULL ведет себя нормально, а '' - как NULL. При этом в конкатенации '' ведет себя как положено, а уже NULL - как ''. Понятно, что хранятся они одинаково, но синтаксически поведение того и другого не симметрично и зависит от контекста. Да уж, сию могучую логику аршином общим не измерить. В Оракул можно только верить :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2010, 16:07 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovУгу, нельзя. Но никакой путаницы нет. Один раз получил ошибку в лоб и тут же побежал снимать not null атрибут со всех строковых полей.Угу, со всех. Включая ключевые ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2010, 16:08 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
FavnПолучается, что в операциях сравнения NULL ведет себя нормально, а '' - как NULL. При этом в конкатенации '' ведет себя как положено, а уже NULL - как ''. Понятно, что хранятся они одинаково, но синтаксически поведение того и другого не симметрично и зависит от контекста.Вы пишете полную чушь (мы ведь Oracle Обсуждаем). Нельзя говорить, что '' ведет себя как NULL. Это все равно, что написать "ока ездит как ваз-1111". '' и null это одно и то же. И поведение этой величины в разных конструкциях четко описаго в документации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2010, 16:17 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Bogdanov Andrey'' и null это одно и то же. Фигасе А в числовой столбец можно пустую строку записать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2010, 16:23 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
ЛПBogdanov Andrey'' и null это одно и то же. Фигасе А в числовой столбец можно пустую строку записать?Легко: Код: plaintext 1. 2. 3. Мне кажется, что понимание данного факта не так уж сложно вне зависимости от того соответствует это стандарту или нет, кажется кому-то правильным или нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2010, 16:26 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
кокой кошмар ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2010, 16:29 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyВы пишете полную чушь (мы ведь Oracle Обсуждаем). Нельзя говорить, что '' ведет себя как NULL. Это все равно, что написать "ока ездит как ваз-1111". '' и null это одно и то же. И поведение этой величины в разных конструкциях четко описаго в документации.Боюсь, что чушь тут пишут, но не я. Согласен, NULL можно использовать как пустое значение, в качестве специфичного флажка, хотя я лично считаю это ошибкой проектирования. Но никто не спорит с тем, что у NULL есть и другое значение - неопределенность. И это значение - первично, именно как неопределенность в троичную реляционную логику NULL и вводили (это, как я уже писал, прямо следует из логических операций над ним). А вот '' как неопределенность трактовать ну никак нельзя, это именно пустое значение, что следует уже из операций над строками, например из конкатенации. Ну попробуйте к строке 'ABC' добавить неизвестную сейчас строку. Что логичнее получить - ту же 'ABC', или неизвестную строку, хоть и с 'ABC...' начинающуюся? Вы говорите, '' и NULL в Оракле тождественны. Получается, что во всех типах NULL может означать или неопределенность, или пустое значение. Кроме строкового. В строковом - именно неопределенность в операциях логических и именно пустое значение в операциях строковых. Т.е. трактовка и '', и NULL не определяется проектировщиком БД, а тупо зависит от контекста применения этих синтаксически разных, но почему-то одинаковых по смыслу в Оракле выражений. Причем в разных контекстах - разный смысл. Что, на мой взляд, предельно нелогично. ЗЫ. Возможно, Вы тут обсуждаете Оракл. А я тут пытаюсь говорить о смысле конструкции NULL в РСУБД вообще и ошбочном ее трактовании в Оракле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2010, 16:39 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyНу неужели так трудно понять, что в Oracle нет "пустых строк", есть только null. Мне кажется, что понимание данного факта не так уж сложно вне зависимости от того соответствует это стандарту или нет, кажется кому-то правильным или нет.Ничего подобного. Факты говорят, что в синтаксисе SQL, в т.ч. Оракла, есть '' и есть NULL - две разные лексемы с синтаксически разными свойствами. Они же говорят, что в Оракле NULL и '' хранятся одинаково, откуда и пртиворечие. При этом эта единая сущность для строк ведет себя как NULL в логике и как '' в строковых операциях. Более того, получается, что в Оракле столбец с возможными пустыми строками даже не может входить в составной ключ, что уже совсем бардак и несовместимость с остальным миром РСУБД. И эти факты ну никак не могут быть правильной реализацией NULL и '', вне зависимости от того, нравится кому-то Оракл или нет. Лично мне он скорее нравится, но вот такие закидоны... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2010, 16:48 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
FavnБоюсь, что чушь тут пишут, но не я. На надо обижаться. Вы, говоря именно об Oracle, пытались сравнивать поведение пустой строки и null, я вам объясняю, что это - бессмысленно, так как в Oracle это два названия одной и той же величины. FavnСогласен, NULL можно использовать То как использовать величину, обозначемую, как null сильно зависит от свойств этой величины. В Oracle и DB2 свойства величин, обозначаемых, как null - разные, а значит и использовать их можно по-разному. И ошибкой проектрования будет не учитывать свойства используемой величины. FavnПолучается, что во всех типах NULL может означать или неопределенность, или пустое значение.Ну это вообще что-то мне непонятное. null всегда обозначает величину, обладающую описанными в документации свойствами. Никаких неопределенностей или пустот он не обозначает. Все это просто некоторые наглядные объяснения, помогающие запомнить свойства величины. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2010, 16:56 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
FavnBogdanov AndreyВы пишете полную чушь (мы ведь Oracle Обсуждаем). Нельзя говорить, что '' ведет себя как NULL. Это все равно, что написать "ока ездит как ваз-1111". '' и null это одно и то же. И поведение этой величины в разных конструкциях четко описаго в документации.Боюсь, что чушь тут пишут, но не я. Согласен, NULL можно использовать как пустое значение, в качестве специфичного флажка, хотя я лично считаю это ошибкой проектирования. Но никто не спорит с тем, что у NULL есть и другое значение - неопределенность. И это значение - первично, именно как неопределенность в троичную реляционную логику NULL и вводили (это, как я уже писал, прямо следует из логических операций над ним). А вот '' как неопределенность трактовать ну никак нельзя, это именно пустое значение, что следует уже из операций над строками, например из конкатенации. Ну попробуйте к строке 'ABC' добавить неизвестную сейчас строку. Что логичнее получить - ту же 'ABC', или неизвестную строку, хоть и с 'ABC...' начинающуюся?Вы тут можете сколько угодно теоретизировать, но по сути NULL - это дополнительный бит информации. В оракле для строк его не ввели. Вероятно посчитав что пустая строка и так довольно красноречива. Вот и вся разница. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2010, 17:00 |
|
||
|
Все таки Oracle впереди планеты всей!
|
|||
|---|---|---|---|
|
#18+
FavnФакты говорят, что в синтаксисе SQL, в т.ч. Оракла, есть '' и есть NULL - две разные лексемы с синтаксически разными свойствами.Да, лексемы две, но свойства у них одинаковые. В чем противоречие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2010, 17:03 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=36732704&tid=1552783]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
33ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 339ms |

| 0 / 0 |
