1
我正在處理一個我無法弄清楚的問題,但我相信我今天取得了一些進展。在where子句,有以下代碼:由to_number引起的間歇性Ora 1722錯誤
AND to_number(REPLACE(TRANSLATE (decode(INSTR(hra_ans.answer_text, '.',1 , 2), 0 , UPPER(hra_ans.answer_text) , 0),'ABCDEFGHIJKLMNOPQURSTWVXYZ+<>:',' '), ' ','')) >= 10
現在,這種hra_ans.answer_text列可以包含從「>」什麼「> 15」到'13 0.68' 到‘無結果’到「1.2。 3.4'等。無效數字錯誤只是間歇性地發生,並非每次都發生。我嘗試用'[^ 0-9。]'的表達式替換Translate with Regexp_Replace,但那也不能解決問題。我發現這對SO:
Here is a similar question I stumbled accross.
在那個崗位,似乎可以將誤差造成的,因爲有操作沒有明確的順序。我可能遇到同樣的情況嗎?如果沒有,否則可能會導致這種行爲?
謝謝!
假設數據中沒有字符不會被TRANSLATE處理,你知道爲什麼錯誤仍會發生嗎? –
@mpminnich - 我最初的預感是有些字符不是由TRANSLATE函數處理的。如果我們排除這種情況,可能會出現諸如NLS設置等問題,因爲某些會話使用歐洲NLS設置(其中小數點分隔符是逗號而非句點),因此會出現間歇性錯誤。但我傾向於認爲數據本身存在問題的可能性更大(例如,歐洲用戶輸入13,68而不是13.68,或者美國用戶輸入1,234.68,而您沒有處理像逗號這樣的字符)。 –
我會試試這個功能,如果它能正常工作,我會接受你的答案。如果沒有,我會回來的! :-) 謝謝。 –