我需要根据搜索条件以特定方式订购查询。我有搜索的顺序为db2工作,但我也需要让它适用于Oracle。
我对db2的查询使用了locate函数。
Select *
from <table>
where UPPER(NAME) like "'%<search>%'
order by locate('<search>', UPPER(NAME)),
UPPER(NAME)
这将返回搜索评论:
评分, 回顾一个任务, 回顾B任务, 另一篇评论
我曾尝试在oracle中使用instr函数,但它没有返回我所希望的。
select *
from <table>
where UPPER(name) like '%<search>%'
order by instr('<search>',UPPER(name)),
name
关于我需要做什么来获取我正在寻找的订单的任何想法?
答案 0 :(得分:3)
你在instr中的参数是错误的方式。您目前正在搜索搜索字词中的模式UPPER(nane)
。以下适用于我:
with sample_data as (select 'Review' name from dual union all
select 'Review A Task' name from dual union all
select 'Review B Task' name from dual union all
select 'Another Review' name from dual)
select *
from sample_data
where UPPER(name) like '%REVIEW%'
order by instr(UPPER(name), 'REVIEW'),
name;
NAME
--------------
Review
Review A Task
Review B Task
Another Review