# 7.15.2. `cast_loose`

## 7.15.2.1. 概要

バージョン 8.0.8 で追加.

`cast_loose` は文字列を指定した型へ緩くキャストします。対象の文字列がキャストできる場合、 `cast_loose` は、文字列を引数で指定された型にキャストします。対象の文字列がキャストできない場合、 `cast_loose` は、引数で指定されたデフォルト値を設定します。

## 7.15.2.2. 構文

`cast_loose` は3つの引数を受け取ります。

    cast_loose(type, value, defaul_value)

`type` : キャスト後の値の型を指定します。

`value` : キャスト対象を指定します。

`default_value` : キャストに失敗した時に設定する値を指定します。

## 7.15.2.3. 使い方

使い方を示すために使うスキーマ定義とサンプルデータは以下の通りです。

実行例:

    table_create Data TABLE_HASH_KEY ShortText
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    load --table Data
    [
    {"_key": "100abc"}
    {"_key": "100"}
    ]
    # [[0, 1337566253.89858, 0.000355720520019531], 2]

以下の例では、"100"と"100abc"を `cast_loose` でキャストします。

実行例:

    select Data   --output_columns '_key, cast_loose(Int64, _key, 10)'
    # [
    #   [
    #     0,
    #     0.0,
    #     0.0
    #   ],
    #   [
    #     [
    #       [
    #         2
    #       ],
    #       [
    #         [
    #           "_key",
    #           "ShortText"
    #         ],
    #         [
    #           "cast_loose",
    #           null
    #         ]
    #       ],
    #       [
    #         "100abc",
    #         10
    #       ]
    #       [
    #         "100",
    #         100
    #       ]
    #     ]
    #   ]
    # ]

`cast_loose` は"100"を100に"100abc"を10にキャストします。"100"はInt64にキャストできますが、"100abc"はInt64にキャストできないためです。

## 7.15.2.4. 戻り値

`cast_loose` はキャスト後の値かデフォルト値を返します。

## 7.15.2.5. 参考

- select