我写了个函数,对某个字段进行转换。比如把15位的身份证号码变成18位。现在库里有800W数据,大部分是好的。但是有些字段的15位身份证号码是乱输的,比如有汉字、有标点符号、有空格等等各种乱七八糟的东西。这样的话,我执行 update TA set sfz=to18(SFZ) WHERE 1=1 总出错。说函数执行错误。有没有办法能把那些错误的记录找出来?这只是个例子。我是说,有没有办法在执行函数时,把导致函数执行错误的记录找出来。
调试欢乐多
身份证,可以用to_number()判断,
或者在外面调用函数时判断函数的返回值,将你需要的记录信息打出来
所以用exception when貌似行不通,不如写一个验证函数比较好。
where nvl(length(regexp_substr(身份证ID,'[^1234567890$]')),0) > 0
找出那些格式不对的行,
或者使用上面的where条件删除掉它们。