SQL中使用select进行查询时的问题

比如说建立的是一个图书库,想通过搜索作者名字查找图书,在数据库中一本图书对应的作者有多个,作者名字之间用空格隔开。如果希望至少输入一个完整的作者名字时才能搜出相关图书,那... 比如说建立的是一个图书库,想通过搜索作者名字查找图书,在数据库中一本图书对应的作者有多个,作者名字之间用空格隔开。如果希望至少输入一个完整的作者名字时才能搜出相关图书,那么这句语句该如何写呢?select * from tb_ where where author like "$_POST['keyWord']" or where author like '%" .$_POST['keyWord']. "%' or where author like '%" .$_POST['keyWord']."% where author like '%".$_POST['keyWord']行吗?而且感觉也不够简洁
上面将空格加在了.$_POST['keyWord']. 前后
展开
 我来答
SQL的艺术
2014-11-16 · SQL写多了就会在追求极致
SQL的艺术
采纳数:2040 获赞数:3324

向TA提问 私信TA
展开全部
select * from tb_ where where author like '% ".$_POST['keyWord']."' or author like '".$_POST['keyWord']." %' or author ='".$_POST['keyWord']."'

若是不修改数据库结构的情况下只能这样做了,按照作者的前后空格的情况,或者是作者就只有一个人的三种情况判断

严格意义上来说,一本书有多个作者应该是一对多的关系,这样设计数据库表有违设计原理
追问
空格是加在".$_POST['keyWord']."的外面吗?还有你后面说的是什么意思,像正规的图书销售网站的数据库是怎么做的呢,你能给说下嘛,谢谢
sun_rain_ice
2014-11-16 · TA获得超过1419个赞
知道小有建树答主
回答量:1286
采纳率:0%
帮助的人:1045万
展开全部
关键是你在数据库中的作者名字是怎么分割存储的?
假设是逗号连接的,你直接

select * from tb_where where author like '%Tom,%' or author like '%Tom'
追问
就是用空格分开的呀
追答
select * from tb_where where author='Tom' or author like ' Tom%' or author like 'Tom %'

考虑到如果这个名字是在中间,那他前面肯定有个空格
如果他是在第一个,那直接在后面加空格然后找其他人
如果他是唯一一个,那就等于。
最后是把%放在后面而不是查找内容的前面,这样不会影响索引
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式