示例词:

iknkr st nm krt prk
iknkr vhgr j k pth
iknkr hkm st
iknkr sr vhgr j k pth

所需条件
现在,如果用户键入:ik s则查询将返回:
iknkr st nm krt prk
iknkr sr vhgr j k pth

如果用户键入:i v则查询将返回:
iknkr vhgr j k pth

当前正在尝试:
SELECT `walpha` AS word, pageID AS id
FROM `SX01`
WHERE `table`= 'S01'
  AND `walpha` like '" . $this->db->escape_like_str($searchVal['keyword']) . "%'
LIMIT 100"

但使用此用户必须键入:iknkr s
为了得到结果
iknkr st nm krt prk
iknkr sr vhgr j k pth

有人能建议一下,正确的做法是什么吗。

最佳答案

您可以从输入构建一个regular expression,然后使用REGEXP让MySQL使用它。例如,您可以将ik s转换为^ik[a-z]* s以匹配以ik开头、后跟以s开头的单词。。。

SELECT words FROM tbl WHERE t.words REGEXP '^ik[a-z]* s';

^意味着我们必须从字符串开始匹配
ik必须是前两个字符
[a-z]将匹配任何小写字母字符
*允许我们匹配零个或多个以前的模式-即任何字符序列都可以遵循ik
则必须有一个空格
s后面跟着一个s-我们不在乎接下来会发生什么。
您可以通过使用“cccc”替换所有空间并使用[a-z]*前缀来从用户输入构建该模式。

09-25 15:48