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は、CHARVARCHAR2NCHARまたはNVARCHAR2のデータ型の文字列、あるいはNUMBERBINARY_FLOATまたはBINARY_DOUBLEの型の数値と評価される任意の式にすることが可能です。オプションのfmt引数およびnlsparam引数の用途は、TO_BINARY_DOUBLEファンクションと同じです。詳細は、「TO_BINARY_DOUBLE」を参照してください。

  • BINARY_FLOAT

    BINARY_FLOATを指定した場合、exprは、CHARVARCHAR2NCHARまたはNVARCHAR2のデータ型の文字列、あるいはNUMBERBINARY_FLOATまたはBINARY_DOUBLEの型の数値と評価される任意の式にすることが可能です。オプションのfmt引数およびnlsparam引数の用途は、TO_BINARY_FLOATファンクションと同じです。詳細は、「TO_BINARY_FLOAT」を参照してください。

  • DATE

    DATEを指定した場合、exprは、CHARVARCHAR2NCHARまたはNVARCHAR2のデータ型の文字列と評価される任意の式にすることができます。オプションのfmt引数およびnlsparam引数の用途は、TO_DATEファンクションと同じです。詳細は、「TO_DATE」を参照してください。

  • INTERVAL DAY TO SECOND

    INTERVAL DAY TO SECONDを指定した場合、exprは、CHARVARCHAR2NCHARまたはNVARCHAR2のデータ型の文字列と評価される任意の式にすることができ、SQL期間書式またはISO存続期間書式の値を含める必要があります。このデータ型には、オプションのfmt引数およびnlsparam引数は適用されません。SQL期間書式およびISO存続期間書式の詳細は、「TO_DSINTERVAL」を参照してください。

  • INTERVAL YEAR TO MONTH

    INTERVAL YEAR TO MONTHを指定した場合、exprは、CHARVARCHAR2NCHARまたはNVARCHAR2のデータ型の文字列と評価される任意の式にすることができ、SQL期間書式またはISO存続期間書式の値を含める必要があります。このデータ型には、オプションのfmt引数およびnlsparam引数は適用されません。SQL期間書式およびISO存続期間書式の詳細は、「TO_YMINTERVAL」を参照してください。

  • NUMBER

    NUMBERを指定した場合、exprは、CHARVARCHAR2NCHARまたはNVARCHAR2のデータ型の文字列、あるいはNUMBERBINARY_FLOATまたはBINARY_DOUBLEの型の数値と評価される任意の式にすることが可能です。オプションのfmt引数およびnlsparam引数の用途は、TO_NUMBERファンクションと同じです。詳細は、「TO_NUMBER」を参照してください。

    exprNUMBER型の値の場合、VALIDATE_CONVERSIONファンクションでは、exprが有効な数値であることを検証します。exprが有効な数値でない場合は、0を戻します。これにより、データベース内の破損した数値を識別できます。

  • TIMESTAMP

    TIMESTAMPを指定した場合、exprは、CHARVARCHAR2NCHARまたはNVARCHAR2のデータ型の文字列と評価される任意の式にすることができます。オプションのfmt引数およびnlsparam引数の用途は、TO_TIMESTAMPファンクションと同じです。fmtを省略すると、exprNLS_TIMESTAMP_FORMAT初期化パラメータによって決定された、TIMESTAMPのデータ型のデフォルト形式である必要があります。詳細は、「TO_TIMESTAMP」を参照してください。

  • TIME WITH TIME ZONE

    TIMESTAMP WITH TIME ZONEを指定した場合、exprは、CHARVARCHAR2NCHARまたはNVARCHAR2のデータ型の文字列と評価される任意の式にすることができます。オプションのfmt引数およびnlsparam引数の用途は、TO_TIMESTAMP_TZファンクションと同じです。fmtを省略すると、exprNLS_TIMESTAMP_TZ_FORMAT初期化パラメータによって決定された、TIMESTAMP WITH TIME ZONEのデータ型のデフォルト形式である必要があります。詳細は、「TO_TIMESTAMP_TZ」を参照してください。

  • TIMESTAMP WITH LOCAL TIME ZONE

    TIMESTAMPを指定した場合、exprは、CHARVARCHAR2NCHARまたはNVARCHAR2のデータ型の文字列と評価される任意の式にすることができます。オプションのfmt引数およびnlsparam引数の用途は、TO_TIMESTAMPファンクションと同じです。fmtを省略すると、exprNLS_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;