如何插入英文字母作为增量订单

时间:2012-10-15 05:21:08

标签: php codeigniter mysqli

嗨我的表结构如下

id   --auto increment id
alphabet
user_id
name

并且在添加i时需要将英文字母作为增量顺序插入用户,如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         .  

感谢您的时间。

3 个答案:

答案 0 :(得分:1)

检查这篇类似的文章:

Algorithm to get the excel-like column name of a number

这是一个很好的简单递归函数(基于零索引数,意思是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之间的数字进行测试......

答案 1 :(得分:1)

使用php实现这一点非常容易, 请检查以下代码

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

或在http://codepad.org/QB4kyV7U

中查看结果

答案 2 :(得分:0)

听起来很像这篇文章

MYSQL: how to "reorder" a table

当您可以使用排序输出您想要的数据时,是否绝对有必要做您想要的事情?