【问题标题】:search for text within string in laravel or mysql在 laravel 或 mysql 中搜索字符串中的文本
【发布时间】:2017-12-05 06:08:51
【问题描述】:

我使用my SQL 作为我的项目的后端,我需要从database 获取所有记录,其中输入字符串的某些部分在database 字符串中可用,例如:

table = seller

id  company_name  seller_name
1   companyname1  seller1
2   companyname2  seller2
3   companyname3  seller3
4   companyname4  seller4

给定字符串是1105 companyname1 is outstanding

因此,如果laravelMySQL 可能,我需要为给定字符串获取id = 1,然后请帮助我。

【问题讨论】:

    标签: mysql laravel laravel-5 query-builder


    【解决方案1】:

    您可以使用like 构造查询:

    where $YourString like concat('%', companyname, '%')
    

    注意:在某些情况下,一个公司名称可能与另一个公司名称非常相似(“company1”和“company10”)。如果这是一个问题,正则表达式可能会有所帮助。

    【讨论】:

    • 你能解释一下吗?我遇到了语法错误。
    • @HirenMangukiya 。 . . like 是 SQL 中的基本运算符,我不知道你遇到了什么语法错误。
    【解决方案2】:

    首先,您必须将该字符串转换为数组。

        $str = "1105 companyname1 is outstanding";
        $str = explode(' ' , $str);
        $results = Seller::whereIn('company_name' , $str)->get();
    



    注意:

    当您将随机字符串转换为数组时,用户输入更多空格会出现错误。

    假设用户输入了一个类似$str = "1105 companyname1 is outstanding"; 的字符串,这将创建更多元素。喜欢

    array(
      0 => '1104',
      1 => '',
      2 => 'companyname1',
      3 => 'is',
      4 => 'outstanding'
    )
    

    因此,为避免这种情况,我不得不建议您多分配一些空格。你可以通过

    $str = preg_split('/\s+/', $string, -1, PREG_SPLIT_NO_EMPTY);

    【讨论】:

    • 感谢公司名称有时包含" "(空格),那一次它就行不通了。
    • 你应该使用 LIKE insted
    猜你喜欢
    • 2021-05-21
    • 2011-09-13
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多