SQL执行报错?

有一种常见的情况,一直用的好好的报告突然提示sql执行报错了:

因为有数对于字段是允许进行类型变更的,但是类型变更的时候不会进行检查(有数是读时检查),当你将一个字段phone(比如电话号码)转为数字类型的时候,有数可以完成转换。如果是字符串类型,在有数内生成的SQL类似:select * from table where phone=’137123456789’

如果你做了转型,那么查询会变成 select * from table where to_number(phone)=137123456789; 若此时你的phone字段内有一个号码是这样的:0574-1234567;显而易见,这个号码不能被成功转型数字,因为有一个’-‘符号。这样就会导致SQL查询错误。

因此,我们需要检查哪些做了类型转换的字段,原始的数据里是否有了不能被转型的脏数据