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;
时间: 2024-08-07 07:57:58

mysql生成varchar类型主键排序的相关文章

Java学习篇之---Mysql中varchar类型总结

Mysql中varchar类型总结 今天新做一个项目,需要自己进行数据库设计,发现自己对varchar的用法还不是很熟悉,所以查阅资料总结若下: 1.varchar类型的变化 MySQL 数据库的varchar类型在4.1以下的版本中的最大长度限制为255,其数据范围可以是0~255或1~255(根据不同版本数据库来定).在 MySQL5.0以上的版本中,varchar数据类型的长度支持到了65535,也就是说可以存放65532个字节的数据,起始位和结束位占去了3个字 节,也就是说,在4.1或以

MySQL数据库自增主键归零的几种方法

MySQL自增主键归零的方法: 如果曾经的数据都不需要的话,可以直接清空所有数据,并将自增字段恢复从1开始计数: truncate table table_name; 2.  当用户没有truncate的权限时且曾经的数据不需要时: 1)删除原有主键: ALTER TABLE 'table_name' DROP 'id'; 2)添加新主键: ALTER TABLE 'table_name' ADD 'id' int(11) NOT NULL FIRST; 3)设置新主键: ALTER TABLE

Python-数据类型 主键auto_increment

1.详细的建表语句 ***** create table 表名( 字段名1 数据类型[(长度) 约束条件], 字段名2 数据类型[(长度) 约束条件] ); 解释: 类型:使用限制字段必须以什么样的数据类型传值 约束条件:约束条件是在类型之外添加一种额外的限制 为什么需要给数据分类?(189 一八九) 1.描述数据更加准确 2.节省内存空间 注意: 1. 在同一张表中,字段名是不能相同 2. 宽度和约束条件可选,字段名和类型是必须的 3.最后一个字段后不加逗号 create database d

mybatis随机生成可控制主键的方式

mybatis生成的主键,一般都是用数据库的序列,可是还有不同的写法,比如: 一.NUMBER类型的主键 <insert id="insertPeriodical" parameterType="cn.edu.hbcf.plugin.periodical.pojo.PeriodicalType">     <selectKey keyProperty="id" resultType="java.lang.Integer

mysql建立自增主键的插入,及自动插入当前时间

MYSQL里用这两个字段,几乎都是必须的. 以前都是自动建立的,现在手把手建立的时候,就要找资料来搞定了. 参考URL: http://blog.csdn.net/Weicleer/article/details/47608289 http://www.cnblogs.com/lhj588/p/4245719.html ============================== 表建立好之后,如何插入值,也是一个问题. ============================== 当数据表中有

mysql 查询表信息,递增主键id

select TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE,AUTO_INCREMENT,TABLE_ROWS from information_schema.`TABLES` where TABLE_SCHEMA = '数据库名' and TABLE_NAME = '表名' ; 通过查询不同列名,获取不同的表信息, TABLE_SCHEMA = "数据库名",table_name = "表名", table_type = "表类型

2016/3/10 数据库简单操作( 创建数据库 创建表 数值类型 主键 外键 自动递增 )

1,在连接下的根目录上点右键,创建数据库      输入数据库名,字符集要设置好,与网页对应起来 点击确定 创建成功2,双击打开数据库     第一个显示的是表 最重要最基础的是表.3,创建表,找到表右键,创建表.     首先要确定列,列名,数据库中不要用中文名来做列名.     再确定数值,类型 bit 布尔型只能存储true false decimal更长可以自己定义 一般用float      char是字符 长度设为1 只能是1 varchar 用来存储字符串 可以设置长度 常用的长度

(转)MYSQL获取自增主键【4种方法】

通过JDBC2.0提供的insertRow()方式 通过JDBC3.0提供的getGeneratedKeys()方式 通过SQL select LAST_INSERT_ID()函数 通过SQL @@IDENTITY 变量 1. 通过JDBC2.0提供的insertRow()方式 自jdbc2.0以来,可以通过下面的方式执行. [java] view plain copy print? Statement stmt = null; ResultSet rs = null; try { stmt =

MySQL中varchar类型在5.0.3后的变化

1.mysql varchar类型变化:mysql 5.0.3 之前: 0--255字节 varchar(20)中的20表示字节数,如果存放urf8编码的话只能放6个汉字. MySQL 5.0.3 之后: 0--65535字节 varchar(20)表示字符数,不管什么编码,既汉字也能放20个.但最多占65532字节(两个字节存放长度,小于255字节用1个字节存放长度) 1.存储限制: varchar 字段是将实际内容单独存储在聚簇索引之外,内容开头用1到2个字节表示实际长度(长度超过255时需