以下の内容はhttps://dk521123.hatenablog.com/entry/2025/08/27/215039より取得しました。


【Snowflake】Snowflakeでエラー「Expression type does not match column data type」が表示

◾️はじめに

原因はエラー内容ですぐに解決できたが
いまいち、納得のいく記述がなかったので
現象自体をメモしておく

【1】トラブル概要

以下のINSERT SELECT 文を実行したところ、
エラー「Expression type does not match column data type」
が表示された

1)エラー発生したSQL

INSERT INTO table_a
SELECT * FROM table_b;

定義

-- どちらもVARIANT型
CREATE TABLE table_a
(
   ...
   XXXX VARIANT
);

CREATE TABLE table_b
(
   ...
   XXXX VARIANT
);

【2】エラー内容

Expression type does not match column data type,
 expecting VARIANT but got VARCHAR(16777216)
 for column XXXX

意訳

式の種類が列のデータ型と一致しません。
列 XXXX に対して VARIANT を期待しましたが、
VARCHAR(16777216) を受け取りました。

【3】原因

* VARIANT型の項目に対して、
 VARCHAR型のデータを格納しようとしたため

# VARIANT型同士なのに?

【4】解決案

https://docs.snowflake.com/ja/sql-reference/data-types-semistructured#using-variant-values

VARIANT データ型との間で値を変換するには、 
CAST 関数、 TO_VARIANT 関数、または :: 演算子(例: expression::VARIANT)
を使用して明示的にキャスト

1)例

修正前

INSERT INTO table_a
SELECT * FROM table_b;

修正後

-- TO_VARIANTを使って明示的にVARIANT型にキャスト
INSERT INTO table_a(..., XXXX)
SELECT ..., TO_VARIANT(XXXX) FROM table_b;

関連記事

Snowflake ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/11/02/130111
Snowflake ~ 入門編 / Hello world
https://dk521123.hatenablog.com/entry/2021/11/22/212520
エラー「Failed to cast variant value "" to XXX」時の対応
https://dk521123.hatenablog.com/entry/2021/12/17/102659
エラー「Insufficient privileges to operate」時の対応
https://dk521123.hatenablog.com/entry/2022/08/02/090439
エラー「<Object> does not exist or not authorized」時の対応
https://dk521123.hatenablog.com/entry/2022/08/18/120935
エラー「Failure using stage area. ... AccessDenied」時の対応
https://dk521123.hatenablog.com/entry/2022/10/27/195547
エラー「Error assuming AWS_ROLE」時の対応
https://dk521123.hatenablog.com/entry/2022/11/25/175912
所有権変更後にエラー「current role has no privileges on it」
https://dk521123.hatenablog.com/entry/2023/04/14/151140
エラー「Ownership restriction violation」時の対応
https://dk521123.hatenablog.com/entry/2023/07/13/000000
COPY INTO したがデータが格納されていない
https://dk521123.hatenablog.com/entry/2022/12/20/152040
エラー「Transient object cannot be cloned to a permanent object」時の対応
https://dk521123.hatenablog.com/entry/2024/09/13/213300
エラー「String 'XXXXX...' is too long and would be truncated」が発生
https://dk521123.hatenablog.com/entry/2024/10/31/133028




以上の内容はhttps://dk521123.hatenablog.com/entry/2025/08/27/215039より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14