oracle报错ORA-01722: invalid number

//state为String类型,当传入小数如"0.1"时,会报错invalid number
and a.w_state = :state
这是因为Oracle数据库在进行隐式数据类型转换时,如果字符串类型的参数可以成功转换为数值型,则会进行类型转换并比较。而在此例中,‘11’可以被正确转换为一个整数,因此不会报错,而如果您将参数state设置为字符串类型的’0.1’,则会导致SQL语句执行错误,提示"ORA-01722: invalid number"。

这是因为在SQL语句中进行了等值比较,而Oracle数据库默认情况下会使用隐式数据类型转换,将所有参数都转换为与表字段类型相同的类型后再进行比较。由于w_state字段的类型为数值型,而参数state的类型为字符串型,因此会导致无法进行正确的比较,从而报错。

猜你喜欢

转载自blog.csdn.net/qq_45699990/article/details/130604926