【问题标题】:Match a value from array of values in mysql匹配mysql中值数组中的值
【发布时间】:2011-11-22 10:41:27
【问题描述】:

我有一个这样的查询:

$sql = "
        SELECT
            *
        FROM
            tbl_emp_data
        WHERE
            company_qualification = '$q'
    ";

现在我的 company_qualification 字段不是单个值,而是一个用逗号分隔的单词,例如 BSc,BA,BCom 等。并且值 $q 是单个值,例如 BA 。那么如何从值 $q 中搜索公司数据。我不能使用LIKE,因为它会匹配BABBA 等字段。

【问题讨论】:

    标签: php mysql sql-like


    【解决方案1】:

    你可以使用FIND_IN_SET

    $sql = "
            SELECT
                *
            FROM
                tbl_emp_data
            WHERE        
               FIND_IN_SET($q,company_qualification)
        ";
    

    【讨论】:

    • SELECT * FROM tbl_emp_data WHERE FIND_IN_SET(B.A,company_qualification) LIMIT 0, 10
    • B.A 是一个字符串,必须用单引号或双引号括起来。将'$q' 放在单引号中,并确保在用查询替换它们之前转义用户输入。
    • @SurajHazarika:欢迎,很高兴为您提供帮助。
    【解决方案2】:
    $sql = "
            SELECT
                *
            FROM
                tbl_emp_data
            WHERE
                company_qualification IN ('".implode("','",$q)."')
        ";
    

    【讨论】:

      【解决方案3】:

      你可以像这样使用IN

      SELECT * FROM tbl_emp_data WHERE company_qualification IN ('BSc', 'BA', 'BCom');
      

      【讨论】:

      • 啊,Shakti Singh 先到了。我不知道 IN 和 FIND_IN_SET 之间的区别。
      猜你喜欢
      • 2015-05-23
      • 1970-01-01
      • 2012-09-14
      • 2018-04-24
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-10
      相关资源
      最近更新 更多