powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Нарвался в Оракле. Может везде так...
25 сообщений из 71, страница 1 из 3
Нарвался в Оракле. Может везде так...
    #32883169
Фотография andrushok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нарвался, тут, случайно. Усе просто, как репа (пареная).
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE TEST
(
   ID NUMBER,
   TEXT VARCHAR(  128 )
);

INSERT INTO TEST (ID, TEXT) VALUES ( 1 , 'text1');
INSERT INTO TEST (ID, TEXT) VALUES ( 2 , '');
COMMIT;

Ну и далее
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT * FROM TEST;
 2  rows

SELECT * FROM TEST WHERE TEXT = 'text1';
 1  row

SELECT * FROM TEST WHERE TEXT = '';  --????
no rows

SELECT * FROM TEST WHERE TEXT IS NULL;  --????
 1  row

Собственно второй INSERT вставил NULL вместо ''. Ну шо, бум знать. А в других базах как. Может, это стандартное поведение?
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32883183
Yo!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Yo!
Гость
т.к. оракл появился задолго до стандартов то ...
/topic/145574&pg=23#1263187
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32883184
protector
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это типа багофича Оракула. В других СУБД не так. Смотри топик здесь: "MS SQL > Oracle = True?" там про это говорили.

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32883191
Фотография Dogen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrushokНарвался, тут, случайно. Усе просто, как репа (пареная).
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE TEST
(
   ID NUMBER,
   TEXT VARCHAR(  128 )
);

INSERT INTO TEST (ID, TEXT) VALUES ( 1 , 'text1');
INSERT INTO TEST (ID, TEXT) VALUES ( 2 , '');
COMMIT;

Ну и далее
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT * FROM TEST;
 2  rows

SELECT * FROM TEST WHERE TEXT = 'text1';
 1  row

SELECT * FROM TEST WHERE TEXT = '';  --????
no rows

SELECT * FROM TEST WHERE TEXT IS NULL;  --????
 1  row

Собственно второй INSERT вставил NULL вместо ''. Ну шо, бум знать. А в других базах как. Может, это стандартное поведение?

В mySQL наоборот
третий запрос одна строка, четвертый ни одной
только что проверил
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32883481
Фотография www.fun4me.narod.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Баян!

Стандартная оракловая багфича...
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32883866
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrushokНарвался, тут, случайно. Усе просто, как репа (пареная).
http://softwarer.ru/Oracle/oracle_facts.html
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32883989
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sybase ASE интерпретирует пустую строку как NULL.
http://www.sybase.ru/forum/forum.pl?group=sybase.ru.dbms.ase&start=525&article=444

Тому кто это придумал, я бы гвоздь в голову забил.
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32884876
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sybase ASE интерпретирует пустую строку как NULL.
наглое враньё.
топик на который ссылку привел до конца дочитал?
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32895669
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пертаскивал программку и базу с db2 на oracle, тоже на эту хрень наткнулся (в db2 пустая строка это пустая строка). данные в db2 и oracle значит теперь разные. ну и ладно. это не моя проблема. если у кого что не сростется -- это все oracle виноват.
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32946572
NewYearпертаскивал программку и базу с db2 на oracle, тоже на эту хрень наткнулся.

Когда-то это стало для меня разочарованием года :)) И в работе действительно иногда мешает.
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32948105
Фотография Leonid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Плохо это, что можно еще сказать.
Пустая строка - это не NULL ни при каких обстоятельствах!

Такое "разумное" поведение Oracle - не есть good :(
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32948142
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid пишет:
> Плохо это, что можно еще сказать.
> *Пустая строка - это не NULL ни при каких обстоятельствах!*
>
> Такое "разумное" поведение Oracle - не есть good :(

То, что пустая строка <> пустая строка (т.к. NULL) - это однозначно
бред. А вот по поводу соответствия пустой строки значению NULL - это
тема великого множества флеймов.

Вопрос на засыпку. Есть форма редактирования чего-нибудь. Там есть
числовое и текстовое поля. Заполнены. Стираю число. Выделяю весь текст в
текстовом поле и нажимаю Del. В числовое поле в БД сохраняется NULL. А
что должно сохраниться в текстовое поле, NULL или ''?
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32948158
f2f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
f2f
Гость
[quot Александр Гoлдун]что должно сохраниться в текстовое поле, NULL или ''?/quot] А вот пусть форма и решает, что нужно. При чем здесь база ?
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32948578
ye z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Александр ГoлдунВопрос на засыпку. Есть форма редактирования чего-нибудь. Там есть числовое и текстовое поля. Заполнены. Стираю число. Выделяю весь текст в текстовом поле и нажимаю Del. В числовое поле в БД сохраняется NULL. А что должно сохраниться в текстовое поле, NULL или ''?
Во-первых, с какого это перепугу в числовое поле идет NULL? Ввод был? Был. Величина NULL может появиться только в двух случаях - либо был insert и в списке полей это поле не указано, и у поля нет дефолтового значения, либо был insert или update и значение поля было явно указано как NULL. Вы указывали NULL явно самолично? Рядом с полем ввода стоял чекбокс "неопределенное значение"? Нет? Так отчего же в базе данных оказалось вранье? Да, именно вранье, поскольку сохранилось не то значение, которое указывалось при сохранении.
Во - вторых, то же самое со строкой.
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32948582
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
note: ye z - это я.
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32950030
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeonidПлохо это, что можно еще сказать.
Пустая строка - это не NULL ни при каких обстоятельствах!

Такое "разумное" поведение Oracle - не есть good :(
Сложно сказать. На самом деле, ввязавшись в проект на MSSQL, я тут же оценил удобство этого "разумного поведения".
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32950038
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
f2fА вот пусть форма и решает, что нужно.
Надоедает решать это в каждой форме. Еще больше надоедает, когда в половине случаев решили так, в половине - этак, а в результате структуры данных (например, ER) становится недостаточно, чтобы написать работающий запрос.

ну яВо-первых, с какого это перепугу в числовое поле идет NULL? Ввод был? Был. Величина NULL может появиться только в двух случаях
Пожалуйста, опубликуйте имя гуру, чье мнение является столь категоричным аргументом.

ну яДа, именно вранье, поскольку сохранилось не то значение, которое указывалось при сохранении.
Действительно вранье, только Ваше. При сохранении указывалось именно значение null.

Простой пример: если взять lookup combobox или любой другой пикер данных, нормальные люди предусматривают ту или иную возможность убрать значение из этого поля. Например, сажают рядом кнопку "очистить". Я предпочитаю обрабатывать клавишу "Del". Независимо от интерфейса это именно что команда очистить поле, без никаких.

Если говорить об edit-ах, в них команда очистки данных - именно что удаление всех символов. Это стандартная метафора любого интефейса (вовсе не обязательно БД-), и если приложение трактует ситуацию так, что то пустое значение, которое было в edit-е изначало, резко отличается от пустого значения, появившегося после стирания содержимого - хм, пользователь будет просто в восторге. Оказывается, теперь посмотреть на экран станет недостаточным чтобы понять, какие же данные пойдут в базу - надо пристально следить за всем, что делал оператор.
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32950045
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё в аксессе так же, как и в оракле Только в отличие от оракла поведение можно себе на голову изменить :

If you want Microsoft Access to store a zero-length string instead of a Null value when you leave a field blank, set both the AllowZeroLength and Required properties to Yes.

ну и соответственно продолжение банкета :

You can use the Format property to distinguish between the display of a Null value and a zero-length string. For example, the string "None" can be displayed when a zero-length string is entered.
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32950086
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerПожалуйста, опубликуйте имя гуру, чье мнение является столь категоричным аргументом.
Честно - не помню уже. Помню, что в области sql к нему в основном прислушивались.
softwarerДействительно вранье, только Ваше. При сохранении указывалось именно значение null.
А я-то в чем наврал? Что пустая строка - это пустая строка? Господин softwarer, лично Вам: я наврал, пустая строка - это не пустая строка. Легче стало?
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32950244
Один
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer LeonidПлохо это, что можно еще сказать.
Пустая строка - это не NULL ни при каких обстоятельствах!

Такое "разумное" поведение Oracle - не есть good :(
Сложно сказать. На самом деле, ввязавшись в проект на MSSQL, я тут же оценил удобство этого "разумного поведения". И наоборот
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32950248
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ye z пишет:

> Во-первых, с какого это перепугу в числовое поле идет NULL? Ввод был?
> Был. Величина NULL может появиться только в двух случаях - либо был
> insert и в списке полей это поле не указано, и у поля нет дефолтового
> значения, либо был insert или update и значение поля было явно указано
> как NULL. Вы указывали NULL явно самолично?

Конечно! Путем стирания числового значения.

> Рядом с полем ввода стоял
> чекбокс "неопределенное значение"? Нет? Так отчего же в базе данных
> оказалось вранье? Да, именно вранье, поскольку сохранилось не то
> значение, которое указывалось при сохранении.

ну я пишет:
> note: ye z - это я.

Это диагноз...
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32950274
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey ShЕщё в аксессе так же, как и в оракле Только в отличие от оракла поведение можно себе на голову изменить :
Это, пожалуй, хуже всего. Как правило даже неудачное, но постоянное решение решение лучше переключателя, из-за которого "вроде бы правильный" код в какой-то ситуации может стать ошибочным.
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32950280
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну яА я-то в чем наврал? Что пустая строка - это пустая строка? Господин softwarer, лично Вам: я наврал, пустая строка - это не пустая строка. Легче стало?
Смотря кому. Пользователю, благодаря Вам вынужденному помнить, что пустая строка в момент открытия формы и пустая строка после ввода-стирания - это две принципиально разных пустых строки, вряд ли станет намного легче. Может, конечно, появится чувство морального удовлетворения от того, что "это не бага, это фича".
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32950282
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОдинИ наоборот
Неудивительно, в общем-то :) Но пока моя статистика такова: я нашел единственное место, где разделение null и пустой строки имеет смысл, и практически всю программу - где их надо обрабатывать совершенно одинаково.
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32950310
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey ShЕщё в аксессе так же, как и в оракле Только в отличие от оракла поведение можно себе на голову изменить
На самом деле не совсем так.
В аксесе св-во AllowZeroLength влияет только на формочки для редактирования, но никак не на SQL-запросы. Т.е. "insert into tablename (fieldname) values ("")" не будет преобразованно в "insert into tablename(fieldname) values(null)" - независимо от значения св-ва AllowZeroLength
...
Рейтинг: 0 / 0
25 сообщений из 71, страница 1 из 3
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Нарвался в Оракле. Может везде так...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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