Oracle DB 查询自定义排序依据

Oracle DB Query Custom Order by

我正在寻找一种方法来完成类似 Oracle 的模糊搜索。如果这个问题已经得到解答,我会很乐意接受 link,但我对 Oracle 还很陌生,所以我什至不确定如何快速搜索我想要的内容。

给定以下查询:

SELECT VEND_CUST_CD, LGL_NM, ALIAS_NM
FROM {{DB_NAME}}.{{DB_TABLE}}
WHERE ({{condition_1}}) AND ({{condition_2}}) AND (upper(LGL_NM) LIKE upper('%{{term}}%')
ORDER BY LGL_NM

我想在回复中得到的是特定订单。为此,我们假设 term=ze

我希望得到这样排序的结果:

所以我首先得到的是以 term 开头的单词,后面是包含 term 的按字母顺序排列的单词列表。

我希望这是清楚的。

我想你可以这样排序结果:

ORDER BY CASE WHEN LGL_NM LIKE '{{term}}%' THEN 1 ELSE 2 END, LGL_NM

你可以像这样使用 union all:

select * from (
SELECT VEND_CUST_CD, LGL_NM, ALIAS_NM
FROM {{DB_NAME}}.{{DB_TABLE}}
WHERE ({{condition_1}}) AND ({{condition_2}}) AND (upper(LGL_NM) LIKE upper('{{term}}%')

union all

SELECT VEND_CUST_CD, LGL_NM, ALIAS_NM
FROM {{DB_NAME}}.{{DB_TABLE}}
WHERE ({{condition_1}}) AND ({{condition_2}}) AND (upper(LGL_NM) LIKE upper('{{%term%}}') AND (upper(LGL_NM) not LIKE upper('{{term%}}')

) order by ...

或者喜欢@Salman A 的方式