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类型主键排序的主要内容,如果未能解决你的问题,请参考以下文章

MYSQL的各个索引类型有啥区别?

MySQL类型转换 使用CAST将varchar转换成int类型排序

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

在 MySQL 中对 varchar 字段进行数字排序

Mysql数据库按照varchar字符串类型排序和按照int整型类型排序的区别和注意点及解决方案

dapper.contrib 是不是支持 varchar 类型的主键?