Ame*_*eer 6 java mysql jsp wildcard
我正在使用JDBC进行外卡搜索.
当我使用单个表时,代码工作正常.
当我尝试使用通配符搜索组合多个表时,代码不起作用.
例如,用户可以搜索任何关键字.
这是动态输入值:
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)
这段代码有什么问题?
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 中看到的,您可以通过重命名其他列来引用您的结果,但列数必须相同。
希望这可以帮助你!