1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Snowflakeで数値型カラムに異なる型を挿入するとどうなる?

Last updated at Posted at 2025-05-02

Qiita初投稿です!

業務で Snowflake を使っていて、数値型のカラムに異なる型の値を挿入した場合の挙動を確認しました。

例えば:

  • 整数型のカラムに小数を入れるとどうなる?
  • 小数型のカラムに桁数が多すぎる数を入れるとどうなる?

テーブル定義と検証コード

-- テーブル作成
CREATE OR REPLACE TABLE sample_table (
    id VARCHAR,
    quantity INTEGER,
    price NUMBER(10,2)
);

-- 通常の挿入(期待される型で)
INSERT INTO sample_table (id, quantity, price)
VALUES ('A001', 10, 99.99);

-- 整数型カラムに小数を挿入(quantity に 12.34)
INSERT INTO sample_table (id, quantity, price)
VALUES ('A002', 12.34, 49.99);

-- 小数型カラムに整数を挿入(price に 50)
INSERT INTO sample_table (id, quantity, price)
VALUES ('A003', 20, 50);

-- 小数型カラムに小数部の桁数が溢れる小数を挿入(price に 50.12345)
INSERT INTO sample_table (id, quantity, price)
VALUES ('A004', 20, 50.12345);

-- 小数型カラムに整数部の桁数が溢れる小数を挿入(price に 500000000000.01)
-- エラーになり実行不可
INSERT INTO sample_table (id, quantity, price)
VALUES ('A005', 20, 500000000000.01);

-- 結果を確認
SELECT * FROM sample_table;

ID QUANTITY PRICE
A001 10 99.99
A002 12 49.99
A003 20 50.00
A004 20 50.12

考察

  • INTEGER カラム(quantity)に 12.34 を挿入すると
    小数点以下が切り捨てられて 12 なった
  • NUMBER(10,2) カラム(price)に 50 を挿入すると
    自動的に 50.00 と変換されて挿入された
  • price50.12345 を挿入すると
    小数第3位以下が切り捨てされて 50.12 なった
  • price500000000000.01 を挿入しようとすると
    定義された精度 NUMBER(10,2) を超過しているためエラーとなる

まとめ

Snowflakeでは、数値型カラムに異なる形式の数値を挿入した場合でも、
可能な限り自動的に型変換や丸め処理が行われるため、多少の型の違いであれば許容される!

ただし、以下の点には注意!:

  • 整数型カラムに小数を入れると小数点以下は切り捨てられる!
  • 小数型カラムでは定義した小数部の桁数(スケール)を超えると切り捨てられる!
  • 桁数の制約(整数部の桁数超過)はエラーとなる!
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?