3

こんにちは、私は次のようなテーブル構造を持っています

id   --auto increment id
alphabet
user_id
name

追加中に、英語のアルファベットをこのような増分順序でユーザーに挿入する必要がありますA,B,C,....Z,AA,AB,AC,...AZ,BA,BB,BC,.....BZ

私はこのようになる必要があります

    id    alphabet  user_id   name  
------------------------------------------
    1      A          1       name-1
    2      B          1       name-2
    .      .          .         .
    .      .          .         .
    26     Z          1       name-n
    27     A          2       name-1
    28     B          2       name-2
    .      .          .         .
    .      .          .         .
    52     Z          2       name-52
    53     AA         2       name-53 
    .      .          .         .
    .      .          .         .
    .      .          .         .
    .      AZ         2         .  

御時間ありがとうございます。

4

3 に答える 3

1

この同様の記事を確認してください:

数値の Excel のような列名を取得するアルゴリズム

これは素敵な単純な再帰関数です(ゼロのインデックス番号に基づいており、0 == A、1 == Bなどを意味します)...

function getNameFromNumber($num) {
    $numeric = $num % 26;
    $letter = chr(65 + $numeric);
    $num2 = intval($num / 26);
    if ($num2 > 0) {
        return getNameFromNumber($num2 - 1) . $letter;
    } else {
        return $letter;
    }
}

And if you want it one indexed (1 == A, etc):

function getNameFromNumber($num) {
    $numeric = ($num - 1) % 26;
    $letter = chr(65 + $numeric);
    $num2 = intval(($num - 1) / 26);
    if ($num2 > 0) {
        return getNameFromNumber($num2) . $letter;
    } else {
        return $letter;
    }
}

0 から 10000 までの数値でテスト済み...

于 2012-10-15T05:48:52.123 に答える
1

PHP を使用してこれを実装するのは非常に簡単です。以下のコードを確認してください。

$i = 'A';
echo $i;
echo PHP_EOL;
while($i != 'ZZ')
{
 echo ++$i;
 echo PHP_EOL;
}

またはhttp://codepad.org/QB4kyV7Uで結果を参照してください。

于 2012-10-15T06:23:09.357 に答える
0

このSOの記事によく似ています

MYSQL: テーブルを「並べ替える」方法

並べ替えを使用してデータを好きなように出力できる場合、必要なことを行う絶対的な必要性はありますか?

于 2012-10-15T05:24:05.170 に答える