2014-06-23 35 views
0

所以,我有一個表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||'%'; 

所以,I F我福煦高中:

它必須返回1 | Highschool

如果是巴黎大學:

必須返回2 | University

而且,如果選擇在t_type不帶任何線路,

它將返回3 | Unkown

我發現了一些樣本,說明如何搜索,但這樣的:

SELECT * 
from t_type 
where contains (lib_type, fullname ,1) 

它將不起作用,因爲fullname將總是大於lib_type。

我想要的是,如果全名的一部分包含一個lib_type到我的表中,那麼返回該行的id和lib_type。

這可能嗎?

我希望我很清楚,如果沒有,告訴我。

回答

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; 

An SQLfiddle to test with

它選擇第一LIB類型的匹配你的輸入,如果沒有匹配它獲取行ID爲3

它通過在默認設置上任何命中PRIO 1和2 PRIO,那麼就按prio排序並獲得第一場比賽。

+0

事實上,這個工作,但似乎很複雜,設置一個默認值。但如果必須,我會的。塔克你。 –

0

如果我有很好的理解你的問題,我認爲你需要做的是這樣的:

SELECT * 
FROM t_type 
WHERE lib_type LIKE "YourResult%" 

凡字符串YourResult包含您正在搜索的文本;)

+0

不,這是相反的,我們不能這樣做,但如果我們可以它應該是'WHERE'%YourResult%「LIKE lib_type'。但是,因爲我們不能,我被封鎖了。 –

相關問題