初めて句を使用CAST
してOracle を試していますが、結果は期待したものではありません。ON CONVERSION ERROR
CAST
句なしで始めましょう:
SELECT CAST(123456 AS NUMBER(1,0)) FROM DUAL;
ORA-01438: "value larger than specified precision allowed for this column"
番号 123456 はNUMBER(1,0)
. どういうわけか魔法のように 1 桁に切り捨てられるわけではありませんが、エラーが発生します。良い。これは私が期待していたことです。
SELECT CAST('123456' AS VARCHAR2(4 CHAR)) FROM DUAL;
Result = '1234'
文字列 '123456' はVARCHAR2(4 CHAR)
. 合わない。文字列が切断されるのではなく、数値と同様に変換エラーが発生することを予期していたことを認めなければなりません。
SELECT CAST(123456 AS NUMBER(1,0) DEFAULT -1 ON CONVERSION ERROR) FROM DUAL;
Result: 123456
それはどうですか?NUMBER(1,0)
突然 123456 という数字が収まらず、整数が返される問題はありませんか?
SELECT CAST('123456' AS VARCHAR2(4 CHAR) DEFAULT 'too long' ON CONVERSION ERROR) FROM DUAL;
ORA-00907: "missing right parenthesis" at position 43
私は何度も何度も見ました。ここには括弧がありません。
私の考えは間違っていますか?それともCAST
、特にON CONVERSION ERROR
条項に関して、欠陥がありますか?