0

我有一个表格,其中一个文件包含卷号,如下所示:

   id | roll_no
   --------------
   1  | 290320452
   2  | 290320453
   3  | 290340454
   4  | 290330455

从上列中,我希望 roll_no 与位置 4 和 5 与 32 匹配。结果将是

   id | roll_no
   --------------
   1  | 290320452
   2  | 290320453

现在我已经通过像这样过滤结果数组来完成:

    $subject_code = 32;    
    foreach($result as $row){
                    if($subject_code != NULL){
                        if(substr($row['roll_no'],3,2) == $subject_code){
                            $data[] = $row['roll_no'];
                        }
                    }
                    else{
                        $data[] = $row['roll_no'];
                    }
}

在查询 mysql 查询时是否有更好的过滤方法。

我见过 mysql 的 SUBSTRING() 函数,但没有帮助。

4

2 回答 2

2
select roll_no from your_table
where substring(cast(roll_no as char(11)), 4, 2) = '32'
于 2012-05-31T06:50:06.247 回答
1

这个怎么样:
您可以使用_ (underscore)通配符来匹配确切的位置数。

select
 id, roll_no 
from
 roll_numbers_table
where
 roll_no like '___32%'; // 3 underscores before 32

对您的样本数据的此声明将导致:

id | roll_no
--------------
1  | 290320452
2  | 290320453
于 2012-05-31T07:44:42.450 回答