情况什么时候......好像

时间:2014-06-03 15:44:31

标签: sql oracle

当Parameter为null时,我需要使用like。这是漫长的一天,我需要一双额外的眼睛。

目前我在SSRS中有一个参数,以便我可以搜索一名工作人员,这完全正常。但是我想在Report Builder中添加一个NULL参数(我可以这样做,这是我今天因某些原因无法做到的SQL)。

Where
   case 
     when  :P_Lecturer is not null then coalesce(to_char(s_details.person_code), 'No Staff Attached') in (:P_Lecturer)
   else coalesce(to_char(s_details.person_code), 'No Staff Attached') like '%%'
end
and [Rest of Conditions]

我收到错误“缺少关键字”。我错过了什么?

有没有更好的方法呢?

1 个答案:

答案 0 :(得分:2)

CASE并不适用于你想要做的事情。但OR工作正常。你只需要让你的事情正确

WHERE
(
   ( :P_Lecturer is not null AND 
      coalesce(to_char(s_details.person_code), 'No Staff Attached') in (:P_Lecturer) 
   )
       OR
   ( :P_Lecturer is null  AND 
      coalesce(to_char(s_details.person_code), 'No Staff Attached') like '%%'
   )
)
and [Rest of Conditions]