1

初めて句を使用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条項に関して、欠陥がありますか?

4

2 に答える 2