我有以下选择查询的问题。
select *
from ".$table2." a,purpose_details b
where b.purpose_code=a.purpose and purpose_code in(1,4,6,7,10)
and ((fromdt<='$frmdate'and todt>='$frmdate')
or (fromdt<='$frmdate' and todt='1111-11-11'))
and substr(a.appno,4,1)!=6
order by purpose_priority,
cast(substr(a.case_no,12,4) as int) ,cast(substr(a.case_no,4,1) as int),
cast(substr(a.case_no,5,7) as int),cast(substr(a.appno,12,4) as int) ,
cast(substr(a.appno,4,1) as int),cast(substr(a.appno,5,7) as int)";
问题是table2中的行可能有也可能没有appno的值。 (即)某些行的appno值可能为NULL。
由于appno是列中的一个,因此该特定代码返回无效输入错误。
最后我想要的是选择查询仅在appno值不为空时按appno排列列。
注意:其余列的order by子句应适用于这两种情况。
请帮我解决一下。在此先感谢。
答案 0 :(得分:0)
顺序可以定义处理空值但substr不能。 你应该替换你的
Substr (col, ...
使用
Case when col is null then null else substr (col, ...