VALIDATE_CONVERSION
構文
目的
VALIDATE_CONVERSION
は、expr
が指定されたデータ型に変換できるかどうかを決定します。expr
を正常に変換できる場合、このファンクションは1を戻し、それ以外の場合は0を戻します。expr
がNULLと評価される場合、このファンクションは1を戻します。expr
の評価中にエラーが発生した場合、このファンクションでエラーが戻されます。
expr
には、SQL式を指定します。expr
で許容されるデータ型と、オプションのfmt
およびnlsparam
の引数の用途は、type_name
に指定したデータ型に応じて異なります。
type_name
には、expr
の変換先のデータ型を指定します。次のデータ型を指定できます。
-
BINARY_DOUBLE
BINARY_DOUBLE
を指定した場合、expr
は、CHAR
、VARCHAR2
、NCHAR
またはNVARCHAR2
のデータ型の文字列、あるいはNUMBER
、BINARY_FLOAT
またはBINARY_DOUBLE
の型の数値と評価される任意の式にすることが可能です。オプションのfmt
引数およびnlsparam
引数の用途は、TO_BINARY_DOUBLE
ファンクションと同じです。詳細は、「TO_BINARY_DOUBLE」を参照してください。 -
BINARY_FLOAT
BINARY_FLOAT
を指定した場合、expr
は、CHAR
、VARCHAR2
、NCHAR
またはNVARCHAR2
のデータ型の文字列、あるいはNUMBER
、BINARY_FLOAT
またはBINARY_DOUBLE
の型の数値と評価される任意の式にすることが可能です。オプションのfmt
引数およびnlsparam
引数の用途は、TO_BINARY_FLOAT
ファンクションと同じです。詳細は、「TO_BINARY_FLOAT」を参照してください。 -
DATE
DATE
を指定した場合、expr
は、CHAR
、VARCHAR2
、NCHAR
またはNVARCHAR2
のデータ型の文字列と評価される任意の式にすることができます。オプションのfmt
引数およびnlsparam
引数の用途は、TO_DATE
ファンクションと同じです。詳細は、「TO_DATE」を参照してください。 -
INTERVAL
DAY
TO
SECOND
INTERVAL
DAY
TO
SECOND
を指定した場合、expr
は、CHAR
、VARCHAR2
、NCHAR
またはNVARCHAR2
のデータ型の文字列と評価される任意の式にすることができ、SQL期間書式またはISO存続期間書式の値を含める必要があります。このデータ型には、オプションのfmt
引数およびnlsparam
引数は適用されません。SQL期間書式およびISO存続期間書式の詳細は、「TO_DSINTERVAL」を参照してください。 -
INTERVAL
YEAR
TO
MONTH
INTERVAL
YEAR
TO
MONTH
を指定した場合、expr
は、CHAR
、VARCHAR2
、NCHAR
またはNVARCHAR2
のデータ型の文字列と評価される任意の式にすることができ、SQL期間書式またはISO存続期間書式の値を含める必要があります。このデータ型には、オプションのfmt
引数およびnlsparam
引数は適用されません。SQL期間書式およびISO存続期間書式の詳細は、「TO_YMINTERVAL」を参照してください。 -
NUMBER
NUMBER
を指定した場合、expr
は、CHAR
、VARCHAR2
、NCHAR
またはNVARCHAR2
のデータ型の文字列、あるいはNUMBER
、BINARY_FLOAT
またはBINARY_DOUBLE
の型の数値と評価される任意の式にすることが可能です。オプションのfmt
引数およびnlsparam
引数の用途は、TO_NUMBER
ファンクションと同じです。詳細は、「TO_NUMBER」を参照してください。expr
がNUMBER
型の値の場合、VALIDATE_CONVERSION
ファンクションでは、expr
が有効な数値であることを検証します。expr
が有効な数値でない場合は、0を戻します。これにより、データベース内の破損した数値を識別できます。 -
TIMESTAMP
TIMESTAMP
を指定した場合、expr
は、CHAR
、VARCHAR2
、NCHAR
またはNVARCHAR2
のデータ型の文字列と評価される任意の式にすることができます。オプションのfmt
引数およびnlsparam
引数の用途は、TO_TIMESTAMP
ファンクションと同じです。fmt
を省略すると、expr
はNLS_TIMESTAMP_FORMAT
初期化パラメータによって決定された、TIMESTAMP
のデータ型のデフォルト形式である必要があります。詳細は、「TO_TIMESTAMP」を参照してください。 -
TIME
WITH
TIME
ZONE
TIMESTAMP
WITH
TIME
ZONE
を指定した場合、expr
は、CHAR
、VARCHAR2
、NCHAR
またはNVARCHAR2
のデータ型の文字列と評価される任意の式にすることができます。オプションのfmt
引数およびnlsparam
引数の用途は、TO_TIMESTAMP_TZ
ファンクションと同じです。fmt
を省略すると、expr
はNLS_TIMESTAMP_TZ_FORMAT
初期化パラメータによって決定された、TIMESTAMP
WITH
TIME
ZONE
のデータ型のデフォルト形式である必要があります。詳細は、「TO_TIMESTAMP_TZ」を参照してください。 -
TIMESTAMP
WITH
LOCAL
TIME
ZONE
TIMESTAMP
を指定した場合、expr
は、CHAR
、VARCHAR2
、NCHAR
またはNVARCHAR2
のデータ型の文字列と評価される任意の式にすることができます。オプションのfmt
引数およびnlsparam
引数の用途は、TO_TIMESTAMP
ファンクションと同じです。fmt
を省略すると、expr
はNLS_TIMESTAMP_FORMAT
初期化パラメータによって決定された、TIMESTAMP
のデータ型のデフォルト形式である必要があります。詳細は、「TO_TIMESTAMP」を参照してください。
例
次の各文では、指定した値を指定したデータ型に正常に変換できます。そのため、これらの各文では1の値が戻されます。
SELECT VALIDATE_CONVERSION(1000 AS BINARY_DOUBLE) FROM DUAL; SELECT VALIDATE_CONVERSION('1234.56' AS BINARY_FLOAT) FROM DUAL; SELECT VALIDATE_CONVERSION('July 20, 1969, 20:18' AS DATE, 'Month dd, YYYY, HH24:MI', 'NLS_DATE_LANGUAGE = American') FROM DUAL; SELECT VALIDATE_CONVERSION('200 00:00:00' AS INTERVAL DAY TO SECOND) FROM DUAL; SELECT VALIDATE_CONVERSION('P1Y2M' AS INTERVAL YEAR TO MONTH) FROM DUAL; SELECT VALIDATE_CONVERSION('$100,00' AS NUMBER, '$999D99', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL; SELECT VALIDATE_CONVERSION('29-Jan-02 17:24:00' AS TIMESTAMP, 'DD-MON-YY HH24:MI:SS') FROM DUAL; SELECT VALIDATE_CONVERSION('1999-12-01 11:00:00 -8:00' AS TIMESTAMP WITH TIME ZONE, 'YYYY-MM-DD HH:MI:SS TZH:TZM') FROM DUAL; SELECT VALIDATE_CONVERSION('11-May-16 17:30:00' AS TIMESTAMP WITH LOCAL TIME ZONE, 'DD-MON-YY HH24:MI:SS') FROM DUAL;
次の文では、指定した値をBINARY_FLOAT
に変換できないため、0が戻されます。
SELECT VALIDATE_CONVERSION('$29.99' AS BINARY_FLOAT) FROM DUAL;
次の文では、指定した数値書式モデルによって値をBINARY_FLOAT
に変換できるため、1が戻されます。
SELECT VALIDATE_CONVERSION('$29.99' AS BINARY_FLOAT, '$99D99') FROM DUAL;