如何在MySQL中插入xxxxx个数的所有排列?

How to insert all the permutations of xxxxx number in MySQL?

我有一个 table 叫 "numbers"

id (int, 自增)

数字(可变字符)

如何插入包含 5 位数字 [0-9] 的数字的所有排列?

00000 00001 00002 ... 99999

LPAD(str,len,padstr) - Returns 字符串 str,用字符串 padstr 左填充到 len 个字符的长度。如果 str 比 len 长,return 值将缩短为 len 个字符。

mysql> SELECT LPAD('hi',4,'??');
        -> '??hi'
mysql> SELECT LPAD(123, 5,'0');
        -> 00123

MySQL 文档。 12.5 字符串函数function LPAD

这是一个 select 语句,生成从 099999 的数字,包括 0 左填充。然后,您可以将其与 INSERT 语句一起使用,一次性将它们插入到您想要的位置。

SELECT LPAD(F.t*10000+E.num3,5,'0') num FROM
(
    SELECT 100*num1+num2 num3
    FROM (
    SELECT t*10+u num1
    FROM
        (SELECT 0 t UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) A,
        (SELECT 0 u UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) B
    ) C,
    (
    SELECT t*10+u num2
    FROM
        (SELECT 0 t UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) A,
        (SELECT 0 u UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) B
    ) D
) E,
(SELECT 0 t UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) F

ORDER BY num

输出为:

+-------+
|  num  |
+-------+
| 00000 |
| 00001 |
| 00002 |
| ...   |
| 99999 |
+-------+