Sql Oracle,跨多个可选字段(名字、中间名、姓氏)搜索
我需要用一个搜索词搜索一个人的名字(分为3个字段) 到目前为止,我有以下代码: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)会更好。例如,创建全
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