所以,我有一个表t_type,其中包含值:
t_type:
id | lib_type
--------------
1 | highschool
2 | University
3 | Unknown
我在另一个表格中进行SELECT
查询,这个表格给我一个全名(例如:Foch Highschool,巴黎大学,随机企业)。
然后,我想在t_type中选择用第一个seelct获取的行:
SELECT *
from t_type
where lib_typ contains '%'||fullname||'%';
所以,我有Foch Highschool:
必须返回1 | Highschool
如果是巴黎大学:
必须返回2 | University
并且,如果t_type中的SELECT不带任何行,
它将返回3 | Unkown
我找到了一些示例,展示了如何搜索,但有了这个:
SELECT *
from t_type
where contains (lib_type, fullname ,1)
它不起作用,因为fullname总是大于lib_type。
我想要的是,如果那个fullname的一部分在我的表中包含一个lib_type,那么返回该行的id和lib_type。
这可能吗?
我希望我清楚,如果没有,请告诉我。
答案 0 :(得分:1)
据我所知,你正在寻找类似的东西;
SELECT id, lib_type FROM (
SELECT id, lib_type, 1 prio FROM mytable
WHERE UPPER('Foch Highschool') LIKE UPPER('%'||lib_type||'%')
UNION ALL
SELECT id, lib_type, 2 prio FROM mytable
WHERE id=3
ORDER BY prio
) z
WHERE ROWNUM=1;
它选择与您的输入匹配的第一个lib类型,如果没有匹配,则获取id为3的行。
通过在任何命中设置prio 1,在默认情况下设置prio 2,然后按prio排序并获得第一个匹配来实现。
答案 1 :(得分:0)
如果我完全理解你的问题,我认为你必须这样做:
SELECT *
FROM t_type
WHERE lib_type LIKE "YourResult%"
字符串YourResult包含您要搜索的文本;)