【问题标题】:mysql string contained within a search string搜索字符串中包含的 mysql 字符串
【发布时间】:2011-05-25 01:45:36
【问题描述】:

我需要的东西看起来很简单,但到目前为止我还没有完成它。可能只是这么晚了,也可能没那么简单,我不知道了:) 所以,事情就是这样。我希望能够检查我网站中的搜索字符串是否包含我数据库中特定列的任何字段。所以,这将与通常的相反:

mysql_query("  
SELECT *  
FROM `table`  
WHERE `column` LIKE '%{$search}%'  
");

查找具有 搜索字符串 包含的值的字段。
使用一些正则表达式或......最简单的方法是什么?

非常感谢!

【问题讨论】:

    标签: mysql regex string match


    【解决方案1】:

    换一种方式来做

    SELECT *  
    FROM `table`  
    WHERE '{$search}' LIKE concat('%', `column`, '%')

    请耐心等待 SQL 注入的变量转义的正确语法。

    【讨论】:

    • 嗯,这是有道理的,但它对我不起作用...没有错误,只是没有过滤出正确的错误。
    • @spaceploitator: 嗯.. 需要显示表定义、少量条目和预期结果。
    • 列字段类型为 latin1_swedish_ci 中的 varchar,所有条目实际上都是 5 位数字。所以如果我搜索“123456”,我想匹配一个“12345”条目。
    • @spaceploitator: select '123456' like concat('%', '12345', '%'); yield true,所以'{$search}' 的语法/转义可能不正确?
    • 是的,你是对的,我做错了什么。多谢!对不起,我不能给你一个 1up :)
    【解决方案2】:

    您的查询也如您所愿。 但你仍然可以试试这个。

    您可以在 mysql 中使用MATCH() AGAINST() 语句搜索您的字符串。

    mysql_query("SELECT * FROM table_name WHERE MATCH(field11,field12) AGAINST ('searchstring')"); 
    
    
    Here your field must be having Fulltext datatype.
    

    这可能会很好。

    谢谢。

    【讨论】:

    • 嗨,chandresh,是的,我对比赛很熟悉,但由于数据类型的原因,它对我不起作用。还是谢谢!
    猜你喜欢
    • 2019-07-08
    • 2021-06-12
    • 2019-05-17
    • 2013-06-26
    • 2013-11-10
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 2023-02-02
    相关资源
    最近更新 更多