我有一个主表(以下称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