mysql生成varchar类型主键排序
2016-02-17 11:31
645 查看
用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命令大全
- MySql 使用GROUP BY 按照日期分组统计
- MySQL绿色版安装与配置
- windows下配置mysql集群
- MySQL中的float、double和decimal类型
- windows下重启mysql服务的方法
- Mysql5.7 ZIP 压缩包非安装版的安装方式
- MySQL数据库的安装
- 使用 powerdesigner 1 4000 5.1 逆向工程mysql 总结
- PowerDesigner逆向工程导入MYSQL数据库总结
- Mysql设置自增长主键的初始值
- MySQL 5.7.10 ZIP 免安装版本配置过程
- mysql 利用触发器(Trigger)让代码更简单
- MySQL 入门 之 数据类型表
- MySQL 入门 之 数据的插入、查询、更新与删除
- 采用Atlas+Keepalived实现MySQL读写分离、读负载均衡
- MySql查看连接数和状态
- mysql小记--基础知识
- mysql 删除重复数据只保留一条sql
- mysql主从失败使用bin-log恢复