如何在Oracle APEX交互式报表查询的WHERE条件中使用LIKE运算符
在Oracle APEX中结合页面项与LIKE运算符的正确写法
你当前的查询问题在于没有给页面项:P39_IDNO添加LIKE需要的百分号通配符——静态查询里的%10280%是把匹配值前后用百分号包裹实现模糊匹配,直接用:P39_IDNO的话,相当于精确匹配页面项的输入值,自然达不到预期效果。
解决方法很简单,直接在查询里把百分号和页面项拼接起来,以下是两种常用写法:
基础模糊匹配写法
直接在WHERE条件中拼接百分号,和静态查询的逻辑完全一致:
SELECT APPT_NO , REQUESTED_OPERATION , CLINICIAN_NAME , CLINICIAN_NAME_AR , STATUS , START_DATE , CREATED_DATE , app_comment, PRACT_FIRST_NAME_A || ' '|| PRACT_FAMILY_NAME_A as "Doctor" FROM appt_notify WHERE PATIENT_Data LIKE '%' || :P39_IDNO || '%'
这样会匹配PATIENT_Data中包含页面项:P39_IDNO值的所有记录。
适配空值的优化写法
如果希望页面项为空时返回所有数据,不为空时才执行模糊匹配,可以加上空值判断:
SELECT APPT_NO , REQUESTED_OPERATION , CLINICIAN_NAME , CLINICIAN_NAME_AR , STATUS , START_DATE , CREATED_DATE , app_comment, PRACT_FIRST_NAME_A || ' '|| PRACT_FAMILY_NAME_A as "Doctor" FROM appt_notify WHERE (:P39_IDNO IS NULL OR PATIENT_Data LIKE '%' || :P39_IDNO || '%')
这种写法更灵活,避免页面项未输入值时没有结果返回。
内容的提问来源于stack exchange,提问作者Ziad Adnan
相关产品推荐
相关产品推荐

