Geo*_*rge 31 mysql sql full-text-search
我正在尝试创建一个搜索功能,搜索多个列以查找基于关键字的匹配项.这个查询:
SELECT title FROM pages LIKE %$query%;
Run Code Online (Sandbox Code Playgroud)
仅用于搜索一列,我注意到用逗号分隔列名会导致错误.那么有可能在mysql中搜索多个列吗?
小智 46
如果它只是用于搜索,那么您可以使用CONCATENATE_WS.这将允许外卡搜索.根据表的大小,可能存在性能问题.
SELECT *
FROM pages
WHERE CONCAT_WS('', column1, column2, column3) LIKE '%keyword%'
Run Code Online (Sandbox Code Playgroud)
aka*_*ike 39
您可以使用AND或OR运算符,具体取决于您希望搜索返回的内容.
SELECT title FROM pages WHERE my_col LIKE %$param1% AND another_col LIKE %$param2%;
Run Code Online (Sandbox Code Playgroud)
两个条款必须匹配要返回的记录.或者:
SELECT title FROM pages WHERE my_col LIKE %$param1% OR another_col LIKE %$param2%;
Run Code Online (Sandbox Code Playgroud)
如果任一子句匹配,则返回记录.
有关使用MySQL SELECT查询可以执行的操作的更多信息,请尝试使用文档.
Qua*_*noi 17
如果你的表是MyISAM
:
SELECT *
FROM pages
WHERE MATCH(title, content) AGAINST ('keyword' IN BOOLEAN MODE)
Run Code Online (Sandbox Code Playgroud)
如果FULLTEXT
在列上创建索引,这将快得多:
CREATE FULLTEXT INDEX fx_pages_title_content ON pages (title, content)
Run Code Online (Sandbox Code Playgroud)
,但即使没有索引也能工作.
1)
select *
from employee em
where CONCAT(em.firstname, ' ', em.lastname) like '%parth pa%';
Run Code Online (Sandbox Code Playgroud)
2)
select *
from employee em
where CONCAT_ws('-', em.firstname, em.lastname) like '%parth-pa%';
Run Code Online (Sandbox Code Playgroud)
当我们有这样的数据时,第一个很有用:'firstname lastname'。
例如
当我们有像这样的数据时,第二个很有用:'firstname-lastname'。您还可以在其中使用特殊字符。
例如
小智 6
这是一个查询,您可以使用它从数据库中搜索任何内容作为搜索结果,
SELECT * FROM tbl_customer
WHERE CustomerName LIKE '%".$search."%'
OR Address LIKE '%".$search."%'
OR City LIKE '%".$search."%'
OR PostalCode LIKE '%".$search."%'
OR Country LIKE '%".$search."%'
Run Code Online (Sandbox Code Playgroud)
使用此代码将帮助您轻松搜索多列
归档时间: |
|
查看次数: |
92113 次 |
最近记录: |