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_DATETO_TIMESTAMP、または PARSE_DATEPARSE_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)。