MySQL - 在 CONCAT 中为"任意数量的空格"添加通配符?



为什么这不起作用?

    SELECT up.first_name, up.last_name
    FROM user_profiles up 
    WHERE u.activated = 1
    AND up.first_name LIKE '%" . $search_term . "%'
    OR up.last_name LIKE '%" . $search_term . "%'
    OR CONCAT(up.first_name, '%', up.last_name) LIKE '%" . $search_term . "%'
    GROUP BY up.last_name
    ORDER BY up.last_name ASC;

当用户输入joe我的自动完成功能返回joe smith .当用户输入smith我的自动完成功能返回joe smith .

但是当用户输入joe smith我的自动完成返回空白时。

我希望CONCAT行能够在用户输入 [中间任意数量的空格] last_name first_name时返回结果。

我相信%适用于任意数量的字符,但不适用于任何数量的空格。任何想法如何修复我的代码?

谢谢!

不起作用,因为您正在寻找$search_term中的文字%(以及名字和姓氏)

替换此行:

OR CONCAT(up.first_name, '%', up.last_name) LIKE '%" . $search_term . "%'

用这一行:

OR ('".$search_term."'  REGEXP CONCAT(up.first_name,[[:blank:]],up.lastname) ) 

如果first_name和last_name不包含特殊的正则表达式字符(如$%^[]等),这将起作用。

请参阅;http://dev.mysql.com/doc/refman/5.1/en/regexp.html
请注意,正则表达式不适用于多字节字符集,请在匹配之前将其转换为 latin1。

OR (CONVERT('".$search_term."' USING LATIN1) 
   REGEXP CONVERT(CONCAT(up.first_name,[[:blank:]],up.lastname) USING LATIN1) ) 

相关内容

  • 没有找到相关文章

最新更新