我有一個主表(以下稱SURVEY)和一個詳細表(以下稱爲ANSWERS)。不出所料,ANSWERS已經回答了SURVEY問題。 ANSWERS有一個名爲TEXT的VARCHAR2列。一些ANSWERS.TEXT值是真正的文本,但有些實際上是數字。幸運的是,我總是知道哪些行包含文本,哪些行包含數字作爲文本。to_number()的另一個問題。我簡直不明白
這是這樣的。我無法改變這一點。
回到當天,當某些ANSWERS行被保存時,他們的TEXT值被櫻桃採摘並放入SURVEY表中正確類型的列中。一個簡單的單表格選擇將獲取SURVEYs和特殊值。
但是現在,隨着新應用程序的添加,我們刪除了特殊列。相反,我們現在必須獲取相應的ANSWERS行'TEXT值。
我已經創建了一個模擬舊的瑣碎選擇語句的查詢。它工作得很好......主要是。
這裏有一個片段:
select survey.*,
j2.overall_score
from survey,
(select to_number(trim(ANSWER.text)) overall_score,
survey.id survey_id
from ANSWER,
[edited - more SQL that gets the 'score' row from ANSWERS]) j2
where
survey.id=j2.survey_id
and overall_score > 70
您可能注意到了J2。在真正的查詢中,有六個這樣的列,j1到j6。當我運行查詢時,它看起來像舊查詢只是。你不能說它真的是從主/細節組裝的。那是一種解脫!
但是,我的問題是'overall_score> 70'短語會導致'1722無效數字'錯誤。當我不包含這個短語時,Oracle和clam一樣快樂,所以所有的輸出都通過j2的to_number()函數傳遞,看起來不錯。但是,如果我添加條件,我失敗了。
where子句的'overall_score'部分是根據從網頁輸入的搜索條件動態添加的。
我需要一些fu告訴Oracle我真的知道我在做什麼,請做。如果有非數字數據,那麼讓j2的to_number()失敗。涼。但是,否則,就這樣做。
任何明智的詞?我是一名承包商,時間快到了。這是一個新的要求: -/
你看過'j2'返回的是什麼,與最終查詢分開嗎?我發現很難相信你在外部查詢中得到了一個無效的數字錯誤 - 我期望'TO_NUMBER'轉換觸發錯誤。 – 2010-09-16 15:37:18
如果我刪除'> 70'條件,查詢將返回行。當我添加條件時,我得到'1722無效數字'悲傷。 – 2010-09-16 15:41:03
哎呀命中回報而不是換行符。當我單獨運行j2子查詢時,它會返回無錯的有效行。 – 2010-09-16 15:41:42