欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > 数据库 >内容正文

数据库

mysql文本自动递增_mysql-如何创建自动递增的字符串?

发布时间:2024/1/23 数据库 35 豆豆
生活随笔 收集整理的这篇文章主要介绍了 mysql文本自动递增_mysql-如何创建自动递增的字符串? 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

简短答案-使用此查询:

SELECT id AS PrevID,CONCAT(

SUBSTRING(id,1,4),IF(CAST(SUBSTRING(id,5) AS UNSIGNED) <= 9,'0',''),CAST(SUBSTRING(id,5) AS UNSIGNED) + 1

) AS NextID

FROM (

-- since you allow strings such as AAAA20 and AAAA100 you can no longer use MAX

SELECT id

FROM t

ORDER BY SUBSTRING(id,4) DESC,5) AS UNSIGNED) DESC

LIMIT 1

) x

结果:

| PrevID | NextID |

| AAAA100 | AAAA101 |

| AAAA21 | AAAA22 |

| AAAA06 | AAAA07 |

只是为了好玩,我写了这个存储过程,它生成的数字看起来像AAAA00 AAAA99 AAAB00等:

CREATE FUNCTION NextID(PrevID VARCHAR(6))

RETURNS VARCHAR(6)

BEGIN

DECLARE s VARCHAR(4);

DECLARE i INT;

DECLARE j INT;

SET s = LEFT(PrevID,4);

SET s = REPLACE(s,'A','0');

SET s = REPLACE(s,'B','1');

SET s = REPLACE(s,'C','2');

SET s = REPLACE(s,'D','3');

SET s = REPLACE(s,'E','4');

SET s = REPLACE(s,'F','5');

SET s = REPLACE(s,'G','6');

SET s = REPLACE(s,'H','7');

SET s = REPLACE(s,'I','8');

SET s = REPLACE(s,'J','9');

SET s = REPLACE(s,'K','A');

SET s = REPLACE(s,'L','B');

SET s = REPLACE(s,'M','C');

SET s = REPLACE(s,'N','D');

SET s = REPLACE(s,'O','E');

SET s = REPLACE(s,'P','F');

SET s = REPLACE(s,'Q','G');

SET s = REPLACE(s,'R','H');

SET s = REPLACE(s,'S','I');

SET s = REPLACE(s,'T','J');

SET s = REPLACE(s,'U','K');

SET s = REPLACE(s,'V','L');

SET s = REPLACE(s,'W','M');

SET s = REPLACE(s,'X','N');

SET s = REPLACE(s,'Y','O');

SET s = REPLACE(s,'Z','P');

SET i = RIGHT(PrevID,2);

SET j = CONV(s,26,10);

SET i = i + 1;

IF i > 99 THEN

SET i = 0;

SET j = j + 1;

END IF;

SET s = CONV(j,10,26);

SET s = REPLACE(s,'Z');

SET s = REPLACE(s,'Y');

SET s = REPLACE(s,'X');

SET s = REPLACE(s,'W');

SET s = REPLACE(s,'V');

SET s = REPLACE(s,'U');

SET s = REPLACE(s,'T');

SET s = REPLACE(s,'S');

SET s = REPLACE(s,'R');

SET s = REPLACE(s,'Q');

SET s = REPLACE(s,'P');

SET s = REPLACE(s,'9','8','7','6','5','4','3','2','1','A');

RETURN CONCAT(LPAD(s,4,'A'),LPAD(i,2,'0'));

END

SELECT NextID('AAAA01') -- AAAA02

SELECT NextID('AAAA99') -- AAAB00

SELECT NextID('AAAB99') -- AAAC00

SELECT NextID('AAAZ99') -- AABA00

总结

以上是生活随笔为你收集整理的mysql文本自动递增_mysql-如何创建自动递增的字符串?的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。