mysql生成varchar类型主键排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql生成varchar类型主键排序相关的知识,希望对你有一定的参考价值。

技术分享

 

用uuid生成20位的主键

SELECT LEFT(REPLACE(UUID(), ‘-‘, ‘‘),20) FROM DUAL

另一种方法:

因为数据库中有字母

 

技术分享

需要排序的时候去除字母,重新取最大值,然后加1算作新的主键

SELECT IFNULL(DEPT_ID,0)+1 FROM base_dept ORDER BY DEPT_ID+0 DESC LIMIT 0,1

或者

使用MySQL函数CAST/CONVERT:

mysql为我们提供了两个类型转换函数:CAST和CONVERT,现成的东西我们怎能放过?

CAST() 和CONVERT() 函数可用来获取一个类型的值,并产生另一个类型的值。
这个类型 可以是以下值其中的 一个:
BINARY[(N)]
CHAR[(N)]
DATE
DATETIME
DECIMAL
SIGNED [INTEGER]
TIME
UNSIGNED [INTEGER]

所以我们也可以用CAST解决问题:

SELECT IFNULL(DEPT_ID,0)+1 FROM base_dept ORDER BY CAST(DEPT_ID as SIGNED) DESC LIMIT 0,1;

也可以使用CONVERT来搞定此问题:

SELECT IFNULL(DEPT_ID,0)+1 FROM base_dept ORDER BY CONVERT(DEPT_ID,SIGNED) DESC LIMIT 0,1;

 

以上是关于mysql生成varchar类型主键排序的主要内容,如果未能解决你的问题,请参考以下文章

hibernate+oracle+主键varchar2类型,增加序列策略注解失败

flea-db使用之主键生成器表介绍

hibernate 对象主键为string

MySQL中怎么对varchar类型排序问题

使用业务实体的自然ID作为主键

varchar类型字段排序混乱问题