0

我有一个客户表

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 查询来获取客户?

4

5 回答 5

1

如果要匹配的模式是

string1<space>anything<space>string2

你可以写:

like string1||' % '||string2
于 2015-10-21T08:52:51.023 回答
1

为什么不是这个

select * from cust where name Like 'John%Matt' ;
于 2015-10-21T09:10:11.077 回答
0
 SELECT *
   FROM custtable
  WHERE upper(NAME) LIKE '%' || upper(:first_word) || '%'
    AND upper(NAME) LIKE '%' || upper(:second_word) || '%'
于 2015-10-21T11:07:43.060 回答
0

你必须使用LIKE吗?Oracle 有很多更强大的搜索选项。

http://docs.oracle.com/cd/B19306_01/server.102/b14220/content.htm#sthref2643

我会看看那些。

于 2015-10-21T12:17:16.020 回答
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>

这里正则表达式字符串指定名称包含“matt”或“deo”,“i”表示不区分大小写。名称的顺序无关紧要。

于 2015-10-21T13:24:08.973 回答