为了测试,表中仅添加了两列,分别是主键id 和 name列,两列都为varchar类型。

备注:id内容格式为 BHXXXX,如:BH0001

因为主键id不是int类型,想实现自动自增功能,使用内置的方法肯定是行不通的,所以,使用了复杂的查询方法及拼接方式,

此方法虽然比较笨,但测试还是可以通过的。

大致思路:在MySql中新建表时,可以创建触发器为id进行自增。

详细思路:

1、使用查询语句查出表中最后一条数据的id,语句:select id from user order by id desc limit 1     得到结果 BH0001

2、使用substring函数截取最后一条BHXXXX中数字部分:

SELECT substring(id,3,4) from userwhere id=(select id from user order by id desc limit 1)   得到结果 0001

其中,3表示从第3位进行截取,4表示截取长度

3、使用concat语句进行字符串连接

concat('BH',(SELECT substring(id,3,4) from userwhere id=(select id from user order by id desc limit 1) +1));

我刚开始认为到这一步的时候,只要给以上结果 +1 ,然后使用concat语句连接字符串就可以了,但是,得到的结果

并不是我想象中的 BH0002,而是BH2,所以,在进行字符串连接之前,得将数字2进行填充,使用LPAD函数,最终结果如下:

concat('BH',lpad(((SELECT substring(id,3,4) from userwhere id=(select id from userorder by id desc limit 1))+1),4,0));

其中,4表示填充长度,0表示填充内容。

触发器完整语句:

CREATE TRIGGER `T` BEFORE INSERT ON `user`

FOR EACH ROW begin

set new.id=concat('SH',lpad(((SELECT substring(id,3,4) from user where id=(select id from user order by id desc limit 1))+1),4,0));

end;

其中,大写T为触发器名称,user为表名,结束!

此解决方式可能有点笨,欢迎大家指点!

文章虽有原创一说,知识不涉及专利,我们应该用来分享,欢迎转载!

mysql varchar 自增_Mysql varchar型自增方法相关推荐

  1. mysql varchar 默认长度_MySQL VARCHAR类型字段到底可以定义多长

    MySQL 单行行长最大是65535,不包含TEXT,BLOB类型. varchar 长度小于255时,需要额外使用1字节存储长度,大于255时,需要 额外使用2字节存储长度. varchar 栏位如 ...

  2. mysql binlog php处理_MySQL数据的binlog处理方法

    最近磁盘增长的非常快,发现binlog日志占用很大的磁盘资源.我们采用手动清理,后面设置一下自动清理. 最近磁盘增长的非常快,发现binlog日志占用很大的磁盘资源.我们采用手动清理,,后面设置一下自 ...

  3. mysql字段最大长度_MySQL VARCHAR字段最大长度到底是多少

    varchar(n),n表示什么? MySQL5.0.3之前varchar(n)这里的n表示字节数 MySQL5.0.3之后varchar(n)这里的n表示字符数,比如varchar(200),不管是 ...

  4. mysql vchar 最大长度_mysql VARCHAR的最大长度到底是多少

    以前一直都认为有两个字节来记录长度(长度小也可以用一个字节记录),所以这个问题当时觉得就挺无聊的 不过后来群里有人给了解释,突然才发现原来事情不是这么简单 MYSQL COMPACT格式,每条记录有一 ...

  5. mysql字符串等于失效_MySql整型索引和字符串索引失效或隐式转换问题

    问题概述 写代码的时候,有一段sql,表示该sql存在隐式转换,不走索引. 经过测试排查后,发现是类型varchar的字段, 我使用条件传入了数值型的值. 问题重现 首先我们先创建一张用户表test_ ...

  6. mysql实现序列自增_MySQL实现序列自增

    #创建序列表 DROP TABLE IF EXISTS `sequence`; CREATE TABLE `sequence` ( `name` varchar(50) NOT NULL COMMEN ...

  7. mysql分表技巧_MySQL分表操作的方法分析

    本节内容: mysql分表 一般来说,当数据库的数据超过了100w记录时就应该考虑分表或者分区了. 本文介绍下mysql分表的一些方法. 首先,需要想好到底分多少个表,前提当然是满足应用. 这里使用了 ...

  8. mysql定义外键_MySQL定义外键的方法

    MySQL定义外键的方法是每个学习MySQL的人都需要掌握的知识,下文就对MySQL定义外键的语句写法进行了详细的阐述,供您参考. 外键为MySQL带来了诸多的好处,下面就为您介绍MySQL定义外键的 ...

  9. java 修改mysql数据库表结构_MYSQL数据库表结构优化方法详解

    摘要:这篇MySQL栏目下的"MYSQL数据库表结构优化方法详解",介绍的技术点是"mysql数据库表结构.MySQL数据库.数据库表结构.MySQL.据库表结构.数据库 ...

最新文章

  1. sharepoint自带JS函数获取URL参数
  2. 替代TabActivity,底部菜单主框架搭建
  3. win7_iis报500.19和500.21错误问题解决
  4. 信息系统项目管理师-项目合同管理核心知识点思维脑图
  5. python3 Django框架报错(备忘录)
  6. 数据挖掘算法_技术分享|大数据挖掘算法之KNNk近邻算法
  7. java面试-Java并发编程(六)——线程间的通信
  8. 哪个Linux发行版运行kvm,如何在Linux发行版上安装和配置KVM和Open vSwitch
  9. PXC 安装 for 5.7
  10. LeetCode(349)——两个数组的交集(JavaScript)
  11. 将循环结果写入到新建的dataframe中
  12. MogileFS与FastDFS的见解
  13. 时速云与炎黄盈动强强联手,打造企业 IT 变革新未来
  14. 解决微信观看视频全屏播放问题
  15. 人工智能实验1-波士顿房价预测
  16. Codeforces_714_A
  17. matlab gram-schmidt,性能 – 加权Gram-Schmidt正交化的MATLAB优化
  18. 顶点计划1——信通2018级学生上早自习缺勤率情况分析
  19. 梦泪的服务器是qq还是微信,梦泪发现微信区1奇特现象,赛季末分数远不如QQ区,看到1细节,懂了...
  20. 产品碳足迹ISO14067认证

热门文章

  1. 苹果MAC视网膜屏pyautogui的坐标转换
  2. 380v pcb 接线端子_PCB常用的接线端子
  3. 数字IC验证快速入门,你想知道的干货都在这里
  4. linux curl命令读取页面信息,使用Curl命令获取网站Web服务器类
  5. 基于Python的对网络评论情感分析:主题与情感词抽取
  6. 用于保存计算机输入输出数据的材料及其,用于保存计算机输入输出数据的材料及其制品称为()。...
  7. xv6实验1-启动计算机(文档)
  8. html鼠标移上去变色放大,CSS3 鼠标滑过图片突出放大效果 | 腾讯云
  9. 计算机外部设备IO接口
  10. 项目管理与SSM框架——Maven