2

MySQL に次のテーブルがあります。

テーブル名: all_items


item_no qty
1l900fu 1
1l950be 2
1l1000bk 3
1l1020rd 5
1l1200fu 7

次のように、2 つの異なる csv ファイルを出力する必要がある 2 つの選択を行う必要があります。

CSV file 1                                       CSV file 2
    item_no qty                                     item_no qty 
    1l900fu 1                                        1l1000bk 3
    1l950be 2                                        1l1020rd 5
                                                     1l1200fu 7

上記の表によると、文字列には数字と文字が含まれているため、 を実行することを考えましたstrlenが、クエリステートメント内に配置する方法がわかりません。

//CSV file 1

$result = mysql_query("SELECT item_no, qty FROM all_items ORDER BY item_no Asc");

//Excuting Values from Mysql to CSV
$row = 1; // 1-based index
while($row_data = mysql_fetch_assoc($result)) {

    $col = 0;
//Row Values
    foreach($row_data as $key=>$value) {
        $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row, $value);
        $col++;
    }
    $row++;
}

それがどのように機能するか考えていますか?item_noに基づくを分離したいstrlen

申し訳ありませんが、私はPHPに精通していません。助けてください!

4

2 に答える 2

1

パターン: 1l900fu

2 つの文字の後に数字といくつかの文字が続きます。

substr()最初の 2 文字の後の文字列を取得するために使用します。

すると900fuになります。

次に、正規表現を使用して、遭遇する最初のアルファまでの数値のみを取得しますが、アルファは含みません。これにより、次のものが残ります。

900。

次に使用しますintval()

2 つの配列を作成します。 intval()< 1000 の場合は最初の配列にプッシュし、それ以外の場合は 2 番目の配列にプッシュします。

これら 2 つの配列から必要に応じて出力を作成します。

または、何らかの理由で MySQL ですべてを行う必要がありますか?

于 2013-06-24T20:24:18.903 に答える
0

LENGTH()php に相当する mysql 関数を探していると思いますstrlen。クエリは次のようになります。

csv1:

SELECT item_no, qty, LENGTH(item_no) as length 
FROM all_items 
HAVING length = 7 
ORDER BY item_no ASC

csv2:

SELECT item_no, qty, LENGTH(item_no) as length 
FROM all_items 
HAVING length = 8 
ORDER BY item_no ASC
于 2013-06-24T20:43:22.447 に答える