我正在尝试使用Oracle APEX类报告中的oracle SQL创建高级搜索查询。
当参数中有值时,有没有办法将查询行插入查询?
例如,我有一个类似的查询:
select person_id, fullname from person where first_name like '%:P11_FNAME%' AND last_name like '%:P11_LNAME%'
是否有一种方法可以在传入实际值时将first_name like '%:P11_FNAME%'
添加到查询中?
答案 0 :(得分:1)
如果SQL引擎嵌入在'%:P11_FNAME%'
之类的字符串文字中,则不会识别绑定变量语法。
您需要使用字符串连接来执行您想要的操作:
select person_id, fullname from person
where first_name like '%' || :P11_FNAME || '%'
AND last_name like '%' || :P11_LNAME || '%';
如果用户将搜索条件留空,则会匹配除名称NULL
之外的所有行。要使空白搜索条件与所有行匹配,您需要添加额外的谓词,例如:
select person_id, fullname from person
where (first_name like '%' || :P11_FNAME || '%' or :P11_FNAME is null)
AND (last_name like '%' || :P11_LNAME || '%' or :P11_LNAME is null);