【Oracle】NUMBER型の使い方(数値・小数)

数値型 NUMBER

Oracleでは数値型を扱うことができます。Oracleの数値型は「NUMBER型」です。

数値型は他にFLOAT型がありますが、使用することはあまりないため、NUMBER型をおさえておけばOKです。

構文

NUMBER(整数+小数の桁数、小数の桁数)

整数・小数の数値型をあらわします。

例1. NUMBER型(整数のみ)のパターン

--整数3桁のNUMBER型
CREATE TABLE tbl1
(s_no NUMBER(3,0));

--INSERT
INSERT INTO tbl1
 VALUES (999);
s_no
999

ここでは「s_no」が整数3桁のNUMBER型として作成しました。整数3桁なのでMAX「999」もINSERTできます。

例2. NUMBER型(整数・小数)のパターン

--整数3桁・小数3桁のNUMBER型
CREATE TABLE tbl1
(s_no NUMBER(6,3));

--INSERT
INSERT INTO tbl1
 VALUES (999.999);

--INSERTエラー 
INSERT INTO tbl1 
 VALUES (99999.999);
s_no
999.999

ここでは「s_no」が整数3桁・小数3桁のNUMBER型として作成しました。

OarcleのSQLは、整数3桁・小数3桁はNUMBER(6,3)と書きます。NUMBER(3,3)ではないので注意が必要です。

整数3桁・小数3桁なのでMAX「999.999」もINSERTできます。「9999.999」は桁あふれなのでエラーとなります。

例3. NUMBER型(整数・小数マイナス)のパターン

--NUMBER型
CREATE TABLE tbl1
(s_no NUMBER(6,-3));

--INSERT
INSERT INTO tbl1
VALUES (1111.111);
s_no
1000

ここでは「s_no」が整数6桁(丸め3桁)のNUMBER型として作成しました。

NUMBER型の第2パラメータが「-3」になっています。これは整数3桁で丸めるという意味です。そしてこの場合、整数部分は純粋に整数桁となり、整数6桁となります。

整数6桁(丸め3桁)に「999.999」をINSERTすると整数3桁で丸められ、「1000」となります。

以上、Oracleの数値型「NUMBER」の解説でした。

コメント

  1. Neo より:

    全般的に、CREATE TABLE 「tbl」なのに、INSERT INTO「tbl1」とテーブル名が異なるのはおかしいと思います。

    また「例3. NUMBER型(整数・小数マイナス)のパターン」で、
    –INSERTエラー
    INSERT INTO tbl1
    VALUES (1111.111);
    の部分は、テーブル名が「tbl」だったとして、INSERTエラーにはならずに「1000」で入ります。

    実際に実行してみたのでしょうか・・・

    • Oracleマスター より:

      INSERTエラーにならず「1000」になる件は本文と結果に書いてあります。
      テーブル名・コメントに誤りがあったため修正しました。
      ご指摘ありがとうございます!