CAST
有効な式と対象のデータ タイプを指定すると、CAST 関数は式を指定されたデータ タイプに変換します。
構文
CAST (expression AS target_data_type)
備考
| • | expression 引数で、ターゲット データ タイプに変換する対象を指定します。 |
| • | 入力式が NULL の場合、出力は NULL です。入力式が空の文字列の場合、出力は空の文字列になります。それ以外の場合、出力タイプはターゲット データ タイプと同じです。 |
| • | ターゲットのデータ タイプには、長さ、精度、位取りの引数を含めることができます。 |
| • | この関数では、BLOB または CLOB データ タイプを使用できます。 |
| • | DECIMAL を INTEGER に変換すると、結果の値は丸められるのではなく切り捨てられます (たとえば、15.99 は 15 に変換されます)。 |
| • | CAST 関数は、エラーを発行せずに文字列を切り捨てることができます。たとえば、CAST ('30000' AS INTEGER) はエラーなしで整数 (30000) を生成します。 |
| • | 文字列 '30000' を TINYINT にキャストすると、CAST 関数はランタイム エラーを発生します。これは、TINYINT データ タイプがこのような大きな数に対応できず、意味のある切り捨てを適用できないためです。このような場合、整数カラムのすべての値が TINYINT データ タイプの有効な値である場合にのみ、CAST は正常に処理されます。 |
| • | CAST 関数を使用して、文字列を切り捨て、小数を切り捨てて整数にすることができます。 |
注:小数を次の整数に切り上げる関数については、「CEILING」を参照してください。
| • | すべての INTERVAL は CHAR と VARCHAR にキャストでき、その逆も可能です。 |
| • | 間隔の年、月、日、時、分、または秒は、同一の間隔単位にのみキャストできます。データ損失が発生すると、エラーがスローされます (下表の例を参照)。 |
| • | 文字列値から DATE、TIME、または TIMESTAMP への CAST では、入力値が次のいずれかの ISO 形式である必要があります。 |
| — | CAST to DATE—「YYYY-MM-DD」入力値形式 |
| — | CAST to TIME—「HH24:MI:SS」入力値形式 (およびオプションの小数点以下の秒と前置の小数点) |
| — | CAST to TIMESTAMP—「YYYY-MM-DD HH24:MI:SS」入力値形式 (およびオプションの小数点以下の秒と前置の小数点) |
値がこれらの形式でない場合は、TO_DATE、TO_TIMESTAMP、または PARSE_DATE、PARSE_TIMESTAMP など。これらの関数を使用した結果、これらの関数の一部がプッシュされず、クエリ自体がプッシュされない場合があります。
次の表は、入力式タイプとターゲット データ タイプの各組み合わせの結果の出力タイプを示しています。
|
式のデータ タイプ |
ターゲット データ タイプ |
出力タイプ |
|
BIGINT、CHAR、DECIMAL、FLOAT、INTEGER、LONGVARCHAR、NUMERIC、REAL、SMALLINT、TINYINT、VARCHAR |
BIGINT、DECIMAL、FLOAT、INTEGER、NUMERIC、REAL、SMALLINT、TINYINT |
ターゲットとなるデータ タイプ |
|
NULL |
BIGINT、CHAR、DATE、DECIMAL、FLOAT、LONGVARCHAR、NULL、NUMERIC、INTEGER、REAL、SMALLINT、TIME、TIMESTAMP、VARCHAR |
NULL |
|
NULL<Data_Type1> |
<Any_Data_Type2> |
NULL<Data_Type1> |
|
BIGINT、CHAR、DATE、DECIMAL、FLOAT、INTEGER、LONGVARCHAR、NUMERIC、REAL、SMALLINT、TIME、TIMESTAMP、TINYINT、VARCHAR |
CHAR、LONGVARCHAR、VARCHAR |
ターゲットとなるデータ タイプ |
|
日付、タイム スタンプ |
DATE |
DATE |
|
TIME、TIMESTAMP |
TIME |
TIME |
|
BIGINT、CHAR、INTEGER、LONGVARCHAR、SMALLINT、TIMESTAMP、TINYINT、VARCHAR |
TIMESTAMP |
TIMESTAMP |
例 (単純な CAST 関数)
SELECT products.UnitPrice, CAST (products.UnitPrice AS INTEGER) Price
FROM /shared/examples/ds_inventory/products products
例 (ターゲット データ タイプには長さが含まれます)
CAST (Orders_Qry.ShipPostalCode AS CHAR (5) )
例 (BLOB または CLOB を使用)
CAST (myBlob AS VARBINARY (size) ) CAST (myVarBinary AS BLOB) CAST (myClob AS VARCHAR (size) ) CAST (myVarChar AS CLOB)
例 (さまざまなデータ タイプへのキャスト)
CAST (INTERVAL '23' MONTH AS INTERVAL YEAR)
これはエラーを返します (11 か月間失われました)。
CAST (INTERVAL '23' MONTH AS VARCHAR)
これは、データ タイプが VARCHAR の 23 を返します。
CAST (INTERVAL '10' YEAR AS INTERVAL MONTH (3) )
これにより、間隔が月単位で返されます (120)。