Oracle Целое число без знака в базе данных - PullRequest
0 голосов
/ 26 мая 2020

Я тоже хочу знать, если Oracle База данных поддерживает unsigned int (number), как я могу его использовать, а если нет, то какая альтернатива этому? Мне не нужен способ поставить условие для синтаксиса SQL, потому что все мои данные положительны, и для производительности и хранения важен unsigned int.

Ответы [ 2 ]

2 голосов
/ 26 мая 2020

Нет целое число без знака в качестве собственного типа данных в Oracle. Есть тип данных NUMBER. Однако вы можете использовать INT, например

SQL> create table test (id int);

Table created.

SQL> insert into test (id) values (-1);

1 row created.

SQL> insert into test (id) values (25.335);

1 row created.

SQL> select * From test;

        ID
----------
        -1
        25

SQL>

Как видите, он принимает как положительные, так и отрицательные значения (десятичные дроби усекаются).

Чтобы сделать это положительный , добавьте ограничение:

SQL> truncate table test;

Table truncated.

SQL> alter table test add constraint ch_id_pos check (id >= 0);

Table altered.

SQL> insert into test (id) values (-1);
insert into test (id) values (-1)
*
ERROR at line 1:
ORA-02290: check constraint (SCOTT.CH_ID_POS) violated


SQL>
1 голос
/ 26 мая 2020

Я не думаю, что Oracle предоставляет конкретный c тип данных для целых чисел без знака. Он предоставляет единый тип данных для хранения фиксированных числовых c значений, называемых NUMBER, точность и масштаб которых можно настраивать по мере необходимости.

В Oracle так называемый тип данных INT является синтаксический сахар, предусмотренный для совместимости с ANSI, который внутренне соответствует NUMBER.

Я бы порекомендовал число со шкалой 0 (это целое число) и контрольное ограничение, чтобы убедиться, что оно положительное:

create table mytable (
    id number(20, 0) check (id >= 0)
);
...