如何通过 'zzz'
生成字符串 'a'
,然后使用 MySQL 将它们保存到表中?
最佳答案
这对于“纯”MySQL 来说有点困难,原因有二:
- 不支持递归查询,迫使你使用临时表来生成所有可能的variations .
- 但是,临时表can't be referenced multiple times from the same query ,因此您不能在其上使用笛卡尔积(即 CROSS JOIN)来生成变体。这迫使您使用“真实”表而不是临时表。
鉴于所有这些,解决方案如下所示:
CREATE TABLE TEMP_CHARS (
C CHAR PRIMARY KEY
);
INSERT INTO TEMP_CHARS VALUES('a'), ('b'), ('c'), ('d'), ('e'), ('f'), ('g'), ('h'), ('i'), ('j'), ('k'), ('l'), ('m'), ('n'), ('o'), ('p'), ('q'), ('r'), ('s'), ('t'), ('u'), ('v'), ('w'), ('x'), ('y'), ('z');
INSERT INTO YOUR_TABLE(YOUR_FIELD)
SELECT C
FROM TEMP_CHARS
UNION ALL
SELECT CONCAT(T1.C, T2.C) -- Generate all variations (with repetition) of length 2.
FROM TEMP_CHARS T1 CROSS JOIN TEMP_CHARS T2
UNION ALL
SELECT CONCAT(T1.C, T2.C, T3.C) -- Generate all variations (with repetition) of length 3.
FROM TEMP_CHARS T1 CROSS JOIN TEMP_CHARS T2 CROSS JOIN TEMP_CHARS T3;
DROP TABLE TEMP_CHARS;
关于mysql - 如何生成字符串 'a' 。 .'zzz' 然后保存到表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8283166/