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;

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM