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']. 前后 展开
上面将空格加在了.$_POST['keyWord']. 前后 展开
展开全部
select * from tb_ where where author like '% ".$_POST['keyWord']."' or author like '".$_POST['keyWord']." %' or author ='".$_POST['keyWord']."'
若是不修改数据库结构的情况下只能这样做了,按照作者的前后空格的情况,或者是作者就只有一个人的三种情况判断
严格意义上来说,一本书有多个作者应该是一对多的关系,这样设计数据库表有违设计原理
若是不修改数据库结构的情况下只能这样做了,按照作者的前后空格的情况,或者是作者就只有一个人的三种情况判断
严格意义上来说,一本书有多个作者应该是一对多的关系,这样设计数据库表有违设计原理
追问
空格是加在".$_POST['keyWord']."的外面吗?还有你后面说的是什么意思,像正规的图书销售网站的数据库是怎么做的呢,你能给说下嘛,谢谢
展开全部
关键是你在数据库中的作者名字是怎么分割存储的?
假设是逗号连接的,你直接
select * from tb_where where author like '%Tom,%' or author like '%Tom'
假设是逗号连接的,你直接
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 %'
考虑到如果这个名字是在中间,那他前面肯定有个空格
如果他是在第一个,那直接在后面加空格然后找其他人
如果他是唯一一个,那就等于。
最后是把%放在后面而不是查找内容的前面,这样不会影响索引
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询