0

次のようなロール番号がフィールドに含まれるテーブルがあります。

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

上記の列から、一致する位置 4 AND 5 と 32 を持つ roll_no が必要です。結果は次のようになります

   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 に答える