カテゴリ:

半構造化データ関数 (キャスト)

AS_<object_type>

この関数のファミリーを使用して、 VARIANT 値を他のデータ型に厳密にキャストできます。

こちらもご覧ください:

IS_<object_type>

一般的な使用上の注意

  • VARIANT 引数の値のタイプが出力値と一致しない場合、 NULL が返されます。例えば、 AS_DATE()に DATE を含まない VARIANT 値が渡された場合、 NULL が返されます。

  • 入力が NULLの場合、出力は NULLです。

vartab テーブルのバリアント型列からすべての数値の平均を計算します。

最初に、テーブルを作成してデータをロードします。

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;

次に、値のデータ型を表示します(一部は数値で、一部は数値以外)。

select n, as_real(v), typeof(v) from vartab;
+---+------------+------------+
| N | AS_REAL(V) | TYPEOF(V)  |
|---+------------+------------|
| 1 |       NULL | NULL_VALUE |
| 2 |       NULL | NULL       |
| 3 |       NULL | BOOLEAN    |
| 4 |     -17    | INTEGER    |
| 5 |     123.12 | DECIMAL    |
| 6 |     191.2  | DOUBLE     |
| 7 |       NULL | VARCHAR    |
| 8 |       NULL | ARRAY      |
| 9 |       NULL | OBJECT     |
+---+------------+------------+

その次に、 VARIANT 列からすべての数値の平均を計算します。

select avg(as_real(v)) from vartab;
+-----------------+
| AVG(AS_REAL(V)) |
|-----------------|
|    99.106666667 |
+-----------------+