Can I pass a number for varchar2 in Oracle?

后端 未结 3 1629
独厮守ぢ
独厮守ぢ 2021-01-13 13:21

I have an Oracle table and a column (col1) has type varchar2(12 byte). It has one row and value of col1 is 1234

W

3条回答
  •  梦毁少年i
    2021-01-13 14:05

    Oracle says invalid number. Why is that? Why I cannot pass a number when it is varchar2?

    Oracle does an implicit conversion from character type of col1 to number, since you're comparing it as a number.

    Also, you assume that 1234 is the only row that's being fetched. In reality, Oracle has to fetch all rows from the table, and then filter out as per the where clause. Now there's a character value in col1 that's being fetched before it encounters your 1234 row & that's causing the error, since the character cannot be converted to a number.

    This fiddle shows the behaviour. Since abc canot be converted to a number, you get that error message


    Now if the only record in the table is that of col1 containing a numeric character, you'll see that the statement will work fine

提交回复
热议问题