我正在寻找一种完成Oracle模糊搜索之类的方法。如果已经回答了这个问题,我会很乐意接受一个链接,但是我对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
的单词的字母顺序列表。
我希望这很清楚。
答案 0 :(得分:5)
我想您可以像这样订购结果:
ORDER BY CASE WHEN LGL_NM LIKE '{{term}}%' THEN 1 ELSE 2 END, LGL_NM
答案 1 :(得分:0)
您可以像这样使用union:
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的方式一样