powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / всегда ли определять Number?
25 сообщений из 40, страница 1 из 2
всегда ли определять Number?
    #39477074
pgiw99oeo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всегда ли определять Number?
то есть всегда ли нужно писать, допустим, Number (20,10)?
или не заморачиваться с этим?
...
Рейтинг: 0 / 0
всегда ли определять Number?
    #39477077
IgorSm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решать вам,
Но процитирую дядю Тома :)
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
What the difference between declaring a column using datatype 

number 
and 
number(n)? 

Ay advantage or disadvantge declaring one way and the another? 

Tom Kyte
Followup  

June 30, 2003 - 7:50 am UTC 

number(n) is a number with a constraint and edit.

ops$tkyte@ORA920>; create table t ( x number, y number(5) );

Table created.

ops$tkyte@ORA920>;
ops$tkyte@ORA920>; insert into t values ( 123.456, 123.456 );

1 row created.

ops$tkyte@ORA920>; insert into t values ( 123.999, 123.999 );

1 row created.

ops$tkyte@ORA920>; insert into t values ( 12345, 12345 );

1 row created.

ops$tkyte@ORA920>; insert into t values ( 123456, 123456 );
insert into t values ( 123456, 123456 )
                               *
ERROR at line 1:
ORA-01438: value larger than specified precision allows for this column


ops$tkyte@ORA920>; select * from t;

         X          Y
---------- ----------
   123.456        123
   123.999        124
     12345      12345


See how the number(5) behaves?  5 digits, no decimals, rounded.  

The advantage is 

a) you have 5 digits only, never more
b) you have no decimals, it is an integer type

consider it a constraint -- like a primary key, NOT NULL, check, whatever.  
If your data is such that the number should never be more then 5 digits, the only correct way to implement it would be as a number(5) 



https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1619552483055
...
Рейтинг: 0 / 0
всегда ли определять Number?
    #39477080
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На просто number'е сталкивался, что когда прикладная приложения float в БД пишет... там иногда такие "странности" получаются. Не все NaN (not a number) в прикладных языках совпадают с NaN в Oracle, и не все драйверы в прикладных языках корректно это обрабатывают.

Потом очень приятно черти какие записи с NaN'ами, на которых JDBC просто падает, в 100-200 Гб базе отыскивать.

Было бы указание размерности/точности у поля, таких глюков бы не было. IMHO
...
Рейтинг: 0 / 0
всегда ли определять Number?
    #39477081
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
p.s. не JDBC падало, но в Java оно приходило не как NaN, а как черти какое число.... после чего уже падал COPY в PostgreSQL, куда программа это число пыталась вставить.... не помню точно, но как-то очень не приятно было... На всю базу 200 Gb, 4-5 записей таких было.

С учетом, что в базе Primary Key были как number'ы из float )))... очень приятно... Первый раз видел БД, где в качестве Primary Key NUMBER, в который пишут float. Как и с каким шагом они его автоинкрементели, х.з., не помню, даже не интересовался. Просто выругался матом и принял как данность.
...
Рейтинг: 0 / 0
всегда ли определять Number?
    #39477091
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pgiw99oeoто есть всегда ли нужно писать, допустим, Number (20,10)?Где?
Может ли INT-параметр иметь дробную часть? - Увы...
...
Рейтинг: 0 / 0
всегда ли определять Number?
    #39477117
pgiw99oeo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
просто я немножко пытался вникнуть, и вроде тип намбер ведет себя как варчар2, т.е. если число короткое, допустим из трех цифр, то пишутся только эти 3 цифры, и память отводится только под эти 3 цифры (ну, может там еще разделитель полей, не суть)
поэтому и заинтересовался стоит ли вообще чего-то экономить, не вижу особой
разницы между NUMBER и NUMBER(20,10)

зы. может я чего-то неправильно понял
...
Рейтинг: 0 / 0
всегда ли определять Number?
    #39477214
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pgiw99oeoесли число короткое, допустим из трех цифр, то пишутся только эти 3 цифры, и память отводится только под эти 3 цифры (ну, может там еще разделитель полей, не суть)Дьявол - в деталях. RTFM Numeric Data Types (FAQ)
pgiw99oeoстоит ли вообще чего-то экономитьВ нынешнее время этот критерий становится всё менее значимым.
pgiw99oeoне вижу особой разницы между NUMBER и NUMBER(20,10)Тип данных должен соответствовать бизнес-понятию. Например, "Количество":
как "штуки" должно допускать только целочисленные значения (2,5 книги - бред);

как "объём" должно допускать и дробные значения (заказал 30л, а влезло 27,473л).
...
Рейтинг: 0 / 0
всегда ли определять Number?
    #39477247
efendi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ElicТип данных должен соответствовать бизнес-понятию. Например, "Количество":
как "штуки" должно допускать только целочисленные значения (2,5 книги - бред);

как "объём" должно допускать и дробные значения (заказал 30л, а влезло 27,473л).


Неудачный пример. То есть, при складском учете , например, на каждый тип "Количества" свой тип данных закладывать закладывать что ли? ИМХО, бред.
...
Рейтинг: 0 / 0
всегда ли определять Number?
    #39477296
coborhc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
efendi,

А check- или ref- constraint-ы прописывать тоже бред?
...
Рейтинг: 0 / 0
всегда ли определять Number?
    #39477305
efendi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
coborhcefendi,

А check- или ref- constraint-ы прописывать тоже бред?

А какое отношение имеет этот вопрос к обсуждаемой теме?
Как наличие check- или ref- constraint-ов повлияет на размерность поля Number, заданного при создании таблицы?
...
Рейтинг: 0 / 0
всегда ли определять Number?
    #39477319
coborhc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
efendi,

"Чукча - не читатель"? Выше цитата была:
авторThe advantage is

a) you have 5 digits only, never more
b) you have no decimals, it is an integer type

consider it a constraint -- like a primary key, NOT NULL, check, whatever.
If your data is such that the number should never be more then 5 digits, the only correct way to implement it would be as a number(5)
...
Рейтинг: 0 / 0
всегда ли определять Number?
    #39477345
efendi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
coborhcefendi,

"Чукча - не читатель"? Выше цитата была:
авторThe advantage is

a) you have 5 digits only, never more
b) you have no decimals, it is an integer type

consider it a constraint -- like a primary key, NOT NULL, check, whatever.
If your data is such that the number should never be more then 5 digits, the only correct way to implement it would be as a number(5)

Не надо путать кислое с пресным. Указание размерности ограничивает только диапазон хранимых значений, например, не больше 5 знаков. Если же на этот диапазон надо наложить дополнительное правило, например, только положительные значения, то тогда на поле вешают check. Или forerign key, если в поле хранится ссылка.
...
Рейтинг: 0 / 0
всегда ли определять Number?
    #39477360
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
efendiНе надо путать кислое с преснымЭто ты ещё зелен. Точность и длина с масштабом - это своего рода ограничения целостности.
хранение varchar2
varchar2(255) и varchar2(4000)
Необходимо ли указывать на размерность Number при создании полей
одна длина varchar2 на все поля ?
Вопрос о хранении типа NUMBER
...
Рейтинг: 0 / 0
всегда ли определять Number?
    #39477396
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
efendiНе надо путать кислое с пресным. Указание размерности ограничивает только диапазон хранимых значений, например, не больше 5 знаков. Если же на этот диапазон надо наложить дополнительное правило, например, только положительные значения, то тогда на поле вешают check. Или forerign key, если в поле хранится ссылка.Это тебе не надо выдумывать виртуальное разделение integrity constraints.

Указание точности типа данных также как check или not null constraint это дополнительное ограничение целостности на данные.
При этом, при указании типа надо указывать ограничение настолько жестко насколько это возможно и необходимо.

Например, если необходимо указать, что строка должна быть от 1 до 5 символов это можно сделать так
Код: plsql
1.
2.
3.
4.
5.
create table t 
(
  id int,
  str varchar2(5) not null
);


а особо творческие личности могут сделать так
Код: plsql
1.
2.
3.
4.
5.
6.
7.
create table t 
(
  id int,
  str varchar2(100),
  constraint str_len check(length(str) <= 5),
  constraint str_not_null check(str is not null)
);


С точки зрения логики можно считать идентичным, но если можно обойтись без check - лучше обойтись.
...
Рейтинг: 0 / 0
всегда ли определять Number?
    #39477472
3.1415
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ElicТочность и длина с масштабом - это своего рода ограничения целостности.
К сожалению точность - не ограничение. С указанной точностью происходит округление, сиречь искажение сохраняемых значений.
...
Рейтинг: 0 / 0
всегда ли определять Number?
    #39477474
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
efendiТо есть, при складском учете , например, на каждый тип "Количества" свой тип данных закладывать закладывать что ли? ИМХО, бред.
Не бред а профессиональный подход к проектированию.
...
Рейтинг: 0 / 0
всегда ли определять Number?
    #39477479
3.1415
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
3.1415К сожалению точность - не ограничение. С указанной точностью происходит округление, сиречь искажение сохраняемых значений.
Меня, к слову, весьма люто от этого бомбит. Вплоть до того, что я предложил бы в ряде случаев ограничивать точность именно чеками.
...
Рейтинг: 0 / 0
всегда ли определять Number?
    #39477482
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3.1415ElicТочность и длина с масштабом - это своего рода ограничения целостности.К сожалению точность - не ограничение. С указанной точностью происходит округление, сиречь искажение сохраняемых значений.Я малость не так написал. Точность с масштабом и длина.
Т.е. в паре. В number(38, 38) ты не влезешь как ни округляй.
...
Рейтинг: 0 / 0
всегда ли определять Number?
    #39477645
efendi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
XMLerefendiТо есть, при складском учете , например, на каждый тип "Количества" свой тип данных закладывать закладывать что ли? ИМХО, бред.
Не бред а профессиональный подход к проектированию.

Ну, давай, прояви профессиональный подход к проектированию, и покажи на примере Elic-a, сколько должно быть полей для учета количества различных видов материалов на складе и какой они должны быть размерности? И как скажем будет выглядеть запрос для подсчета общей стоимости всех материалов на складе?

ElicТип данных должен соответствовать бизнес-понятию. Например, "Количество":
как "штуки" должно допускать только целочисленные значения (2,5 книги - бред);
как "объём" должно допускать и дробные значения (заказал 30л, а влезло 27,473л).
...
Рейтинг: 0 / 0
всегда ли определять Number?
    #39477649
efendi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ElicefendiНе надо путать кислое с преснымЭто ты ещё зелен. Точность и длина с масштабом - это своего рода ограничения целостности.


efendi Указание размерности ограничивает только диапазон хранимых значений, например, не больше 5 знаков.
И что я сказал не так?
...
Рейтинг: 0 / 0
всегда ли определять Number?
    #39477653
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
efendiсколько должно быть полей для учета количества различных видов материалов на складе и какой они должны быть размерности?Хоть это и оффтоп, но на складах хранят исчислимые материалы.
...
Рейтинг: 0 / 0
всегда ли определять Number?
    #39477665
3.1415
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
efendiсколько должно быть полей для учета количества различных видов материалов на складе и какой они должны быть размерности?
Два? number(9) для количества и number(<=9) для ссылки на единицу измерения.
...
Рейтинг: 0 / 0
всегда ли определять Number?
    #39477672
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
efendi,

імхо, склад складу рознь, напр металлобаза и аптечный

зы
imho, для склада явно не int

.....
stax
...
Рейтинг: 0 / 0
всегда ли определять Number?
    #39477681
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..зы
imho, для склада явно не int

.....
stax
не скажи, может там все в штуках меряется
...
Рейтинг: 0 / 0
всегда ли определять Number?
    #39477688
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
123ййstax..зы
imho, для склада явно не int

.....
stax
не скажи, может там все в штуках меряется
трудно представить, всегда найдутся умельцы выдать
пол рулона, чверть бутылки, 5таблеток из пачки и тд

....
stax
...
Рейтинг: 0 / 0
25 сообщений из 40, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / всегда ли определять Number?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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