2015-04-01 78 views
1

我需要根據搜索條件以特定方式排序查詢。我有爲db2工作的搜索順序,但我也需要爲Oracle工作。在Oracle中按instr排序

我對db2的查詢使用了locate函數。

Select * 
from  <table> 
where UPPER(NAME) like "'%<search>%' 
order by locate('<search>', UPPER(NAME)), 
     UPPER(NAME) 

這將返回作爲搜索的觀點:

評論, 審查任務, 評論B任務, 另一個評論

我曾嘗試使用InStr函數在Oracle但它沒有回報我所希望的。

select * 
from  <table> 
where UPPER(name) like '%<search>%' 
order by instr('<search>',UPPER(name)), 
     name 

關於我需要做什麼才能獲得我要找的訂單?

回答

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 
+0

感謝您的幫助!我應該仔細看看這個功能。 – Hugs 2015-04-01 10:16:58