拥有以下表格架构:
id | english_name | russian_name | year
---------------------------------------
5 | The Book | Kniga | 2008
和给定的输入:Kniga 2008
;
是否可以重现以下步骤?
russian_name
搜索EXACT MATCH。如果匹配,则返回行; english_name
以获取完整匹配。Kniga 2008
),则尝试查看列并查看是否存在匹配的任何组合列。在此特定情况下,russian_name
和year
将匹配。-
,/
,:
等字符,因此如果给定的输入为:The Book / Kniga 2008
或The Book : 2008
,则结果仍应包含该行上方。答案 0 :(得分:2)
这不漂亮,但是:
SELECT * FROM books WHERE russian_name = ? OR english_name = ? OR CONCAT(russian_name, ' ', year) LIKE ? OR CONCAT(english_name, ' ', year) LIKE ?
其中查询字符串设置为前两个问号,第二个和第三个设置为:
'%' . str_replace ( ' ', '%', $query ) . '%'