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
。
我希望得到这样排序的结果:
- Zealot Johnson
- 泽文胸食客
- Zero 重力
- Amazed John
- 贝达兹泽l
- Lazer 性
- Zazew
所以我首先得到的是以 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 的方式
我正在寻找一种方法来完成类似 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
。
我希望得到这样排序的结果:
- Zealot Johnson
- 泽文胸食客
- Zero 重力
- Amazed John
- 贝达兹泽l
- Lazer 性
- Zazew
所以我首先得到的是以 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 的方式