Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Нарвался в Оракле. Может везде так... / 25 сообщений из 71, страница 1 из 3
25.01.2005, 18:15
    #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
25.01.2005, 18:21
    #32883183
Yo!
Yo!
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарвался в Оракле. Может везде так...
т.к. оракл появился задолго до стандартов то ...
/topic/145574&pg=23#1263187
...
Рейтинг: 0 / 0
25.01.2005, 18:22
    #32883184
protector
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарвался в Оракле. Может везде так...
Это типа багофича Оракула. В других СУБД не так. Смотри топик здесь: "MS SQL > Oracle = True?" там про это говорили.

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
25.01.2005, 18:24
    #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
25.01.2005, 23:51
    #32883481
www.fun4me.narod.ru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарвался в Оракле. Может везде так...
Баян!

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

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

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

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

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

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

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

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

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

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

Если говорить об edit-ах, в них команда очистки данных - именно что удаление всех символов. Это стандартная метафора любого интефейса (вовсе не обязательно БД-), и если приложение трактует ситуацию так, что то пустое значение, которое было в edit-е изначало, резко отличается от пустого значения, появившегося после стирания содержимого - хм, пользователь будет просто в восторге. Оказывается, теперь посмотреть на экран станет недостаточным чтобы понять, какие же данные пойдут в базу - надо пристально следить за всем, что делал оператор.
...
Рейтинг: 0 / 0
08.03.2005, 14:40
    #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
08.03.2005, 16:11
    #32950086
ну я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарвался в Оракле. Может везде так...
softwarerПожалуйста, опубликуйте имя гуру, чье мнение является столь категоричным аргументом.
Честно - не помню уже. Помню, что в области sql к нему в основном прислушивались.
softwarerДействительно вранье, только Ваше. При сохранении указывалось именно значение null.
А я-то в чем наврал? Что пустая строка - это пустая строка? Господин softwarer, лично Вам: я наврал, пустая строка - это не пустая строка. Легче стало?
...
Рейтинг: 0 / 0
08.03.2005, 23:03
    #32950244
Один
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарвался в Оракле. Может везде так...
softwarer LeonidПлохо это, что можно еще сказать.
Пустая строка - это не NULL ни при каких обстоятельствах!

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

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

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

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

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

Это диагноз...
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
09.03.2005, 00:23
    #32950274
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарвался в Оракле. Может везде так...
Alexey ShЕщё в аксессе так же, как и в оракле Только в отличие от оракла поведение можно себе на голову изменить :
Это, пожалуй, хуже всего. Как правило даже неудачное, но постоянное решение решение лучше переключателя, из-за которого "вроде бы правильный" код в какой-то ситуации может стать ошибочным.
...
Рейтинг: 0 / 0
09.03.2005, 00:27
    #32950280
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарвался в Оракле. Может везде так...
ну яА я-то в чем наврал? Что пустая строка - это пустая строка? Господин softwarer, лично Вам: я наврал, пустая строка - это не пустая строка. Легче стало?
Смотря кому. Пользователю, благодаря Вам вынужденному помнить, что пустая строка в момент открытия формы и пустая строка после ввода-стирания - это две принципиально разных пустых строки, вряд ли станет намного легче. Может, конечно, появится чувство морального удовлетворения от того, что "это не бага, это фича".
...
Рейтинг: 0 / 0
09.03.2005, 00:30
    #32950282
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарвался в Оракле. Может везде так...
ОдинИ наоборот
Неудивительно, в общем-то :) Но пока моя статистика такова: я нашел единственное место, где разделение null и пустой строки имеет смысл, и практически всю программу - где их надо обрабатывать совершенно одинаково.
...
Рейтинг: 0 / 0
09.03.2005, 01:45
    #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]