如何在mysql数据库中根据关键字或字符串进行选择?

ru9i0ody  于 2022-10-22  发布在  Mysql
关注(0)|答案(3)|浏览(196)

我正在制作搜索功能,但我不知道如何只选择包含搜索项的行。其想法是只从“Text”列中的表lines中选择字符串为$search的行。我怎么做?谢谢

nhaq1z21

nhaq1z211#

$query = "SELECT * FROM lines WHERE Text LIKE '%".$search."%'";

使用mysql的LIKE和通配符(%)应该可以做到这一点。

2nc8po8w

2nc8po8w2#

我不建议使用LIKE来解决子字符串或关键字搜索,因为这会强制执行表扫描,并且无法通过索引进行改进。这意味着随着表的增长,它的运行速度将比使用全文索引的解决方案慢数百倍或数千倍。
MySQL支持FULLTEXT索引类型,但它仅适用于MyISAM(当前)。了解如何CREATE FULLTEXT INDEX以及如何使用FULLTEXT索引函数MATCH() AGAINST()
大多数人使用Sphinx SearchApache Solr进行全文索引,作为MySQL的补充技术。
另请参阅我的演示文稿或我的书。

fslejnso

fslejnso3#

select * from lines where Text = $search

或使用

select * from lines where Text like '%$search%'

如果您想搜索包含$search但不完全匹配的值。

编辑

如果$search只包含Text中某个值的一部分,但与单词的顺序不匹配,I.E Text的value=“pizza in paris”和$search = "pizza paris",则可以将$serch拆分为单独的字符串,并使用and子句运行搜索。

select * from lines where Text like '%$search1%' and Text like '%$search2%'

其中$search1是第一个字,$search2为第二个字。

相关问题