2017-07-16 54 views
0

我想根据在字符串中找到它们的位置来订购文本搜索。那些在字符串开头找到的匹配首先出现,依此类推。如果我的描述不清楚,或许我迄今尝试的内容将有所帮助。根据匹配的地方从通配符搜索中订购结果

Select "BANK", "ACH" from "FI" where "ACH" like '1119%' 
    Union All 
    Select "BANK", "ACH" from "FI" where "ACH" like '%1119%' 

这是迄今为止我所能想到的最好的。我的直觉说它可能不是有效的,它并不像我想的那样解决问题。

回答

2

你可以这样做:

Select "BANK", "ACH" 
from "FI" 
where "ACH" like '%1119%' 
order by (case when "ACH" like '1119%' then 1 else 2 end); 

或者,这里是另一种方式,是简单的:

order by position('1119' in "ACH") 

该订单由您正在搜索的字符串的位置。

+0

非常感谢你!我认为职位职能真的能够满足最好的需求。我结束了ORDER BY职位(“LACH”中的'1119'),“LACH” – DaOneTwo