Sql Oracle,跨多个可选字段(名字、中间名、姓氏)搜索

Sql Oracle,跨多个可选字段(名字、中间名、姓氏)搜索,sql,database,oracle,Sql,Database,Oracle,我需要用一个搜索词搜索一个人的名字(分为3个字段) 到目前为止,我有以下代码: SELECT * FROM "EMPLOYEES" WHERE (lower(first_name || middle_name || last_name) LIKE '%johnsmith%'); 但这仅在用户搜索一个名称或两个相邻名称时有效。我还希望能够搜索名+姓。我知道我可以单独执行或查询,但是否有其他方法可以使中间名可选?Oracle全文搜索(Oracle text)会更好。例如,创建全

我需要用一个搜索词搜索一个人的名字(分为3个字段)

到目前为止,我有以下代码:

SELECT * FROM "EMPLOYEES" WHERE (lower(first_name || middle_name || last_name) LIKE '%johnsmith%');

但这仅在用户搜索一个名称或两个相邻名称时有效。我还希望能够搜索
名+姓
。我知道我可以单独执行
查询,但是否有其他方法可以使
中间名
可选?

Oracle全文搜索(Oracle text)会更好。例如,创建全文索引并使用contains()函数nice and clean。我这样做,并用“代码”>术语=Tale.DeasCase.gSub([[AZ],'%')(Ruby)对搜索项进行了消毒,以便在中间获得通配符。干杯
   with names(first_name,middle_name,last_name)
    as(select 'John','','Doe' from dual
    union
    select 'Jane','Mary','Doe' from dual
    union
    select 'John','','Smith' from dual
    union
    select 'George','Smith','Michael' from dual
    union
    select 'John','Lee','Smith' from dual
    )
    select *
    from names
    where  lower(first_name||middle_name||last_name) like '%john%smith%'

FIRST_ MIDDL LAST_NA
------ ----- -------
John   Lee   Smith
John         Smith