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 回答