如何使用通配符从多个表中搜索值?

Ame*_*eer 6 java mysql jsp wildcard

我正在使用JDBC进行外卡搜索.

当我使用单个表时,代码工作正常.

当我尝试使用通配符搜索组合多个表时,代码不起作用.

例如,用户可以搜索任何关键字.

  1. 如果用户搜索" 板球 ",则在体育表格中可以使用板球关键字
  2. 如果用户搜索" windows 8 ",则它在软件表中可用
  3. 如果用户搜索" google,yahoo ",则关键字在网站表中可用

这是动态输入值:

where s1(cricket,windows 8,google)
Run Code Online (Sandbox Code Playgroud)

在单表搜索中,我在体育表中寻找" 板球 ".

这是我的查询,工作正常:

"select * from sports WHERE feed LIKE '%" +s1 + "%'";
Run Code Online (Sandbox Code Playgroud)

我的多表查询不起作用.

    "select * from  product  WHERE sitename LIKE '%"+s1+"%'" "OR 

    "select * from  sports     WHERE sitename LIKE '%"+s1+"%'" " OR

    "select * from  website  WHERE sitename LIKE '%"+s1+"%'" " OR

    "select * from  software  WHERE sitename LIKE '%"+s1+"%'" "OR

    "select * from   other   WHERE sitename LIKE '%"+s1+"%'"
Run Code Online (Sandbox Code Playgroud)

这段代码有什么问题?

Obl*_*obl 2

UNION尝试用 a而不是 a连接单个语句OR。使用此功能,您可以连接多个 SQL 查询和具有相同列的表。例如:

"select * from  product  WHERE sitename LIKE '%"+s1+"%' UNION 

 select * from  sports   WHERE sitename LIKE '%"+s1+"%' UNION

 select * from  website  WHERE sitename LIKE '%"+s1+"%' UNION

 select * from  software  WHERE sitename LIKE '%"+s1+"%' UNION

 select * from   other   WHERE sitename LIKE '%"+s1+"%'" ;
Run Code Online (Sandbox Code Playgroud)

但要注意!您的单个表必须具有相同的列/列数,否则它将无法工作!
也许更好的例子来澄清:

"select sitename, description from  product  WHERE sitename LIKE '%"+s1+"%' UNION 

 select sitename, description from  sports   WHERE sitename LIKE '%"+s1+"%' UNION

 select sitename, description from  website  WHERE sitename LIKE '%"+s1+"%' UNION

 select sitename, description from  software  WHERE sitename LIKE '%"+s1+"%' UNION

 select sitename, text as description from   other   WHERE sitename LIKE '%"+s1+"%'" ;
Run Code Online (Sandbox Code Playgroud)

正如您在语句 6 中看到的,您可以通过重命名其他列来引用您的结果,但列数必须相同。

希望这可以帮助你!