- カテゴリ:
半構造化データ関数と構造化データ関数 (型述語)
TYPEOF¶
VARIANT 列に格納されている値の型を返します。
- こちらもご参照ください。
構文¶
TYPEOF( <expr> )
引数¶
expr
引数には、列名または型 VARIANT の一般式を指定できます。必要に応じて、
expr
を VARIANT に キャスト することができます。
戻り値¶
BOOLEAN、 DECIMAL、 ARRAY、 OBJECT、などのように、入力式のデータ型を含む VARCHAR 値を返します。
使用上の注意¶
入力が正確な整数であっても、入力の物理的なストレージ型を変更する最適化により、返される文字列が DECIMAL になる可能性があります。
この関数は、入力引数として 構造化タイプ をサポートしていません。
例¶
vartab
テーブルを作成して入力します。INSERT ステートメントは PARSE_JSON 関数を使用して、テーブルの v
列に VARIANT 値を挿入します。
CREATE OR REPLACE TABLE vartab (n NUMBER(2), v VARIANT);
INSERT INTO vartab
SELECT column1 AS n, PARSE_JSON(column2) AS v
FROM VALUES (1, 'null'),
(2, null),
(3, 'true'),
(4, '-17'),
(5, '123.12'),
(6, '1.912e2'),
(7, '"Om ara pa ca na dhih" '),
(8, '[-1, 12, 289, 2188, false,]'),
(9, '{ "x" : "abc", "y" : false, "z": 10} ')
AS vals;
データをクエリする。このクエリは、 TYPEOF 関数を使用して、 VARIANT 列に格納されている値のデータ型を表示します。
SELECT n, v, TYPEOF(v)
FROM vartab
ORDER BY n;
+---+------------------------+------------+
| N | V | TYPEOF(V) |
|---+------------------------+------------|
| 1 | null | NULL_VALUE |
| 2 | NULL | NULL |
| 3 | true | BOOLEAN |
| 4 | -17 | INTEGER |
| 5 | 123.12 | DECIMAL |
| 6 | 1.912000000000000e+02 | DOUBLE |
| 7 | "Om ara pa ca na dhih" | VARCHAR |
| 8 | [ | ARRAY |
| | -1, | |
| | 12, | |
| | 289, | |
| | 2188, | |
| | false, | |
| | undefined | |
| | ] | |
| 9 | { | OBJECT |
| | "x": "abc", | |
| | "y": false, | |
| | "z": 10 | |
| | } | |
+---+------------------------+------------+
次の例では、 TYPEOF 関数を使用して、 VARIANT に値を キャスト することにより値のデータ型を決定します。
テーブルを作成し、テーブルに入力します。
CREATE OR REPLACE TABLE typeof_cast(status VARCHAR, time TIMESTAMP);
INSERT INTO typeof_cast VALUES('check in', '2024-01-17 19:00:00.000 -0800');
各値を VARIANT にキャストすることにより、 TYPEOF 関数を使用してテーブルをクエリします。
SELECT status,
TYPEOF(status::VARIANT) AS "TYPE OF STATUS",
time,
TYPEOF(time::VARIANT) AS "TYPE OF TIME"
FROM typeof_cast;
+----------+----------------+-------------------------+---------------+
| STATUS | TYPE OF STATUS | TIME | TYPE OF TIME |
|----------+----------------+-------------------------+---------------|
| check in | VARCHAR | 2024-01-17 19:00:00.000 | TIMESTAMP_NTZ |
+----------+----------------+-------------------------+---------------+