VALIDATE_CONVERSION
構文
目的
VALIDATE_CONVERSIONは、exprが指定されたデータ型に変換できるかどうかを決定します。exprを正常に変換できる場合、このファンクションは1を戻し、それ以外の場合は0を戻します。exprがNULLと評価される場合、このファンクションは1を戻します。exprの評価中にエラーが発生した場合、このファンクションでエラーが戻されます。
exprには、SQL式を指定します。exprで許容されるデータ型と、オプションのfmtおよびnlsparamの引数の用途は、type_nameに指定したデータ型に応じて異なります。
type_nameには、exprの変換先のデータ型を指定します。次のデータ型を指定できます。
-
BINARY_DOUBLEBINARY_DOUBLEを指定した場合、exprは、CHAR、VARCHAR2、NCHARまたはNVARCHAR2のデータ型の文字列、あるいはNUMBER、BINARY_FLOATまたはBINARY_DOUBLEの型の数値と評価される任意の式にすることが可能です。オプションのfmt引数およびnlsparam引数の用途は、TO_BINARY_DOUBLEファンクションと同じです。詳細は、「TO_BINARY_DOUBLE」を参照してください。 -
BINARY_FLOATBINARY_FLOATを指定した場合、exprは、CHAR、VARCHAR2、NCHARまたはNVARCHAR2のデータ型の文字列、あるいはNUMBER、BINARY_FLOATまたはBINARY_DOUBLEの型の数値と評価される任意の式にすることが可能です。オプションのfmt引数およびnlsparam引数の用途は、TO_BINARY_FLOATファンクションと同じです。詳細は、「TO_BINARY_FLOAT」を参照してください。 -
DATEDATEを指定した場合、exprは、CHAR、VARCHAR2、NCHARまたはNVARCHAR2のデータ型の文字列と評価される任意の式にすることができます。オプションのfmt引数およびnlsparam引数の用途は、TO_DATEファンクションと同じです。詳細は、「TO_DATE」を参照してください。 -
INTERVALDAYTOSECONDINTERVALDAYTOSECONDを指定した場合、exprは、CHAR、VARCHAR2、NCHARまたはNVARCHAR2のデータ型の文字列と評価される任意の式にすることができ、SQL期間書式またはISO存続期間書式の値を含める必要があります。このデータ型には、オプションのfmt引数およびnlsparam引数は適用されません。SQL期間書式およびISO存続期間書式の詳細は、「TO_DSINTERVAL」を参照してください。 -
INTERVALYEARTOMONTHINTERVALYEARTOMONTHを指定した場合、exprは、CHAR、VARCHAR2、NCHARまたはNVARCHAR2のデータ型の文字列と評価される任意の式にすることができ、SQL期間書式またはISO存続期間書式の値を含める必要があります。このデータ型には、オプションのfmt引数およびnlsparam引数は適用されません。SQL期間書式およびISO存続期間書式の詳細は、「TO_YMINTERVAL」を参照してください。 -
NUMBERNUMBERを指定した場合、exprは、CHAR、VARCHAR2、NCHARまたはNVARCHAR2のデータ型の文字列、あるいはNUMBER、BINARY_FLOATまたはBINARY_DOUBLEの型の数値と評価される任意の式にすることが可能です。オプションのfmt引数およびnlsparam引数の用途は、TO_NUMBERファンクションと同じです。詳細は、「TO_NUMBER」を参照してください。exprがNUMBER型の値の場合、VALIDATE_CONVERSIONファンクションでは、exprが有効な数値であることを検証します。exprが有効な数値でない場合は、0を戻します。これにより、データベース内の破損した数値を識別できます。 -
TIMESTAMPTIMESTAMPを指定した場合、exprは、CHAR、VARCHAR2、NCHARまたはNVARCHAR2のデータ型の文字列と評価される任意の式にすることができます。オプションのfmt引数およびnlsparam引数の用途は、TO_TIMESTAMPファンクションと同じです。fmtを省略すると、exprはNLS_TIMESTAMP_FORMAT初期化パラメータによって決定された、TIMESTAMPのデータ型のデフォルト形式である必要があります。詳細は、「TO_TIMESTAMP」を参照してください。 -
TIMEWITHTIMEZONETIMESTAMPWITHTIMEZONEを指定した場合、exprは、CHAR、VARCHAR2、NCHARまたはNVARCHAR2のデータ型の文字列と評価される任意の式にすることができます。オプションのfmt引数およびnlsparam引数の用途は、TO_TIMESTAMP_TZファンクションと同じです。fmtを省略すると、exprはNLS_TIMESTAMP_TZ_FORMAT初期化パラメータによって決定された、TIMESTAMPWITHTIMEZONEのデータ型のデフォルト形式である必要があります。詳細は、「TO_TIMESTAMP_TZ」を参照してください。 -
TIMESTAMPWITHLOCALTIMEZONETIMESTAMPを指定した場合、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;