代码之家  ›  专栏  ›  技术社区  ›  xkeshav

MySQL从两列中搜索文本

  •  1
  • xkeshav  · 技术社区  · 14 年前

    我有一张像这样的桌子

      id | first_name | last_name | age | class |
    

    现在我要搜索可以是名字或姓氏的任何地方的文本

    我在使用下面的mysql查询

     "SELECT * FROM tbl_world WHERE REGEXP '".$word."' IN( first_name, last_name)";
    

    在哪里? $word 是用户输入(意味着如果我搜索“hell”,那么“hello”和“wellhell”也会返回到结果中)

    以上查询显示错误,请建议我在MySQL中优化搜索方法。

    附加问题: 我应该用likr还是rlike?

    3 回复  |  直到 14 年前
        1
  •  2
  •   slebetman    14 年前

    我会这样做:

    "SELECT * FROM tbl_world WHERE first_name REGEXP '" . $word .
        "' OR  last_name REGEXP '" . $word . "'"
    
        2
  •  0
  •   LesterDove    14 年前
     "SELECT * FROM tbl_world 
    WHERE first_name LIKE  '%".$word."%' 
    OR last_name LIKE  '%".$word."%'";
    

    (如果要在多个字段中搜索字符串,请考虑启用全文搜索。)

        3
  •  0
  •   Ian Clelland    14 年前
    "SELECT * FROM tbl_world WHERE first_name LIKE '%'".$word."%' OR last_name LIKE '%".$word."%'"