2015-10-21 83 views
0

我有一個卡斯特表如何在查詢中使用LIKE來查找多個單詞?

id name   class mark 

1 John Deo Matt Four 75 
2 Max Ruin  Three 85 
3 Arnold   Three 55 
4 Krish Star HN Four 60 
5 John Mike  Four 60 
6 Alex John  Four 55 

我想搜索可能被給定爲John Matt沒有deo字符串客戶。如何使用LIKE條件呢?

SELECT * FROM cust WHERE name LIKE '%John Matt%' 

結果應取第1行

什麼,如果搜索字符串是試圖找到一個確切的名稱時Matt Deojohn

以上無法實施。即使給出2個字符串,我如何使LIKE查詢獲取客戶?

+1

%是通配符。所以像'約翰%馬特'這樣的名字會匹配'約翰東西馬特' – Rene

+0

@勒但如果「馬特迪奧」必須搜索? – user41048

+0

'select * from cust where name like'%John%Matt%';'不要忘記Oracle會檢查case(區分大小寫)。 – RubahMalam

回答

1

如果要匹配的模式是

string1<space>anything<space>string2 

你可以寫:

like string1||' % '||string2 
+0

如果搜索字符串「Matt Deo」怎麼辦? – user41048

+0

看看您是否可以重寫我的陳述以滿足您的需求。你總是可以添加一個或...來匹配string1 ||' 「||字符串2。 – Rene

+0

不工作!我們可以使用'Contains()'嗎? – user41048

0

爲什麼不這樣

select * from cust where name Like 'John%Matt' ; 
0
SELECT * 
    FROM custtable 
    WHERE upper(NAME) LIKE '%' || upper(:first_word) || '%' 
    AND upper(NAME) LIKE '%' || upper(:second_word) || '%' 
0

我相信你需要REGEXP_LIKE():

SQL> with tbl(name) as (
     select 'John Deo Matt' from dual 
    ) 
    select name 
    from tbl 
    where regexp_like(name, 'matt|deo', 'i'); 

NAME 
------------- 
John Deo Matt 

SQL> 

這裏正則表達式字符串指定名稱中包含「亞光」或「迪奧」和「我」是指其不區分大小寫。名字的順序無關緊要。

相關問題