MySQL中大数字加减,不产生千位符和科学计数
mysql数字加减科学计数法
这两天因为需求,需要获取一张表的流水号。规则是这样的。当前日期+8位流水号。比如:2015062400000001,2015062400000002,2015062400000003....
因为考虑到并发问题,所以解决的方案是:在MySQL写存储过程,逻辑如下:
1、查询表今天流水号的最大主键值:如:
- SELECT MAX(a.ORDER_ID) from Zhang_Test a where 1=1 and a.order_id LIKE CONCAT('%',nowDate,'%')
其中nowData 是:SELECT date_format(NOW(),'%Y%m%d') from dual 即当前日期,没有任何分隔符;如:20150624
2、判断是否有值,如果有+1。没有则为nowData + 00000001 如:2015062400000001;设置为今天第一个流水号。
3、向表插入数据,这样就把这个流水号占用了。如果有其他程序访问这个存储过程,那么就会在当前的流水号上再加1.
4、返回当前流水号
因为这些都是在存储过程中执行,所以就能有效保证获取的流水号是唯一的。这样就不会造成主键冲突。只是保存数据时,由新增变为了更新,因为获取的流水号在存储过程中就已经插入了一条数据,即表中已经有了这条数据。
遇见的问题:
再次过程中遇见的问题:
获取流水号时,如果查询出流水号那么我们在今天最大流水号+1,问题如下:
- BEGIN
- #Routine body goes here...
- #需求获取序列号,格式为:8位日期 + 8位序列号 如2014082100000001
- #查询时根据当前日期值【如:20140821】
- # 定义最大序号值
- DECLARE maxSeq VARCHAR(20);
- # 当前日期值
- DECLARE nowDate VARCHAR(20);
- # 获取当前日期值
- set nowDate = (SELECT date_format(NOW(),'%Y%m%d') from dual);
- # 获取最大序列值
- SET maxSeq = (SELECT MAX(a.ORDER_ID) from Zhang_Test a where 1=1 and a.order_id LIKE CONCAT('%',nowDate,'%') ); #'%20150623%'
- #SET maxSeq = 2015062399999888;
- #SET maxSeq = 2015062399999888+1; # 99999888
- SET maxSeq = maxSeq+1;
- INSERT INTO Zhang_Test (order_id) VALUES(maxSeq);
- # 获取序列信息
- SELECT maxSeq ;
- END
结果如下:变为了科学计数。这肯定不是我们想要的。
如果:
- SET maxSeq = maxSeq+1; 变为==》 SET maxSeq = FORMAT(maxSeq+1,0);
那么结果为:
显然以上都不是我们所需要的。
所以我们应当这样:
- SET maxSeq = maxSeq+1; 变为==》 SET maxSeq = CONVERT(maxSeq,SIGNED)+1; 或者为: SET maxSeq = CAST(maxSeq as SIGNED)+1;
结果为:
这便是我们所需要的结果了。
MySQL中大数字加减,不产生千位符和科学计数的更多相关文章
- 购物车数字加减按钮HTML+CSS+JS(有需要嫌麻烦的小伙伴拿走不谢)
之前在写详情页的时候,如下图 因为自己嫌麻烦,就去看其他网站是怎么写的,想直接拿来用,后来看来看去觉得写得很麻烦,于是最后还是决定自己写,附上HTML+CSS+JS代码,一条龙一站式贴心服务2333 ...
- 小巧实用的数字加减插件(jquery插件)
2015-12-04 近期项目需要,我将插件更新了,增加了两个参数,一个参数控制文本框是否支持输入,另一个参数则是新增了一个回调函数,返回文本框内的值.另外对代码局部重构了,优化了一下封装,需要的朋友 ...
- jQuery数字加减插件
jQuery数字加减插件 我们在网上购物提交订单时,在网页上一般会有一个选择数量的控件,要求买家选择购买商品的件数,开发者会把该控件做成可以通过点击实现加减等微调操作,当然也可以直接输入数字件数.本文 ...
- JS生成数字加减乘法验证码
给大家分享一个简单的js验证码生成代码 PS:该代码依赖Jquery1.4版本以上 传入元素 如productionVerificationCode(#\(("a")) 反回验证码 ...
- 纯CSS样式实现数字加减按钮的最佳方案
前言: 对于数字加减按钮的实现,以前用过不少方案,诸如: 1.使用背景图片——这种效果比较好,缺点是样式控制有点复杂了,还需要使用图片: 2.直接使用“+”“-”——这种方法简单粗暴,最容易实现,缺点 ...
- 对Textbox的值转换为带千位符和小数的Decimal字符串
以下Function可以用于textbox的KeyUp事件: 2014-06-06 发现旧版IE不支持selectionStart还有字符串的"[]"索引获取值, 已经修复这个bu ...
- js实现千位符分隔
前几天面试做保险项目的公司,被问到了一道实现千位符分割方法的题,乍一看挺简单,但做起来最后却没给出来一个合适的解决方法.回来自己琢磨了一个还行的答案. var num = 3899000001, ar ...
- js千位符 | js 千位分隔符 | js 金额格式化
js 千位分隔符 千位分隔符,其实就是数字中的逗号.依西方的习惯,人们在数字中加进一个符号,以免因数字位数太多而难以看出它的值.所以人们在数字中,每隔三位数加进一个逗号,也就是千位分隔符,以便更加容易 ...
- wpf 千位符 格式化字符串
StringFormat={}{0:N2}}//格式话字符串,增加千位符,2保留小数点后2位 StringFormat={}{0:N0}}//格式话字符串,增加千位符,无小数点后
随机推荐
- Memcached stats sizes 命令
Memcached stats sizes 命令用于显示所有item的大小和个数. 该信息返回两列,第一列是 item 的大小,第二列是 item 的个数. 语法: stats sizes 命令的基本 ...
- Git常用命令和Git团队使用规范指南
转自:https://wsgzao.github.io/post/git/ 前言 在2005年的某一天,Linux之父Linus Torvalds 发布了他的又一个里程碑作品——Git.它的出现改变了 ...
- PIL中文文档
(0)http://hereson.iteye.com/blog/2224334 (1)http://blog.csdn.net/yjwx0018/article/details/52852067 ( ...
- 对于"第一次创业者"应该给什么样的建议
转:其实我创业也不是很成功(目前属于第二次).目前为止,基本保证家里足够温饱和足够温馨,偶尔奢侈,但是我坚持走技术路线,不做土豪(因为做不了). 我创业的口号是:成全别人,累死自己!! 有人问 ...
- mvc 获取 HtmlHelper 表达式值
public static MvcHtmlString Try<TModel, TProperty>( this HtmlHelper<TModel> htmlHelper, ...
- flask学习(七):URL反转
1. 什么叫反转URL:从视图函数到url的转换叫做反转url 2. 反转url的用处: 1) 在页面重定向的时候,会使用url反转 2) 在模板中,也会使用url反转 3. 实例: 打印出了url
- POJ 2369 Permutations (置换的秩P^k = I)
题意 给定一个置换形式如,问经过几次置换可以变为恒等置换 思路 就是求k使得Pk = I. 我们知道一个置换可以表示为几个轮换的乘积,那么k就是所有轮换长度的最小公倍数. 把一个置换转换成轮换的方法也 ...
- 关于ie下消除offset 问题解决
这个问题应该是上周就发现了,所有页面都没有问题,偏偏就一个页面出现不兼容问题,而且他们用的是同一个文件.这真是一个神奇的事情.今天一来上班,我就着手解决这个问题,分析查看原来是这个元素多了一个offs ...
- C++复习11.函数的高级特性
C++ 函数的高级特性 20131002 C++函数增加了重载(override), inline, const, virtual四种机制,重载和内联机制既可以用于全局函数,也可以用于类的成员函数.c ...
- 【zznu-2093】毁掉这颗二叉树
题目描述 广寒宫下有株二叉树,树上共有n个节点,通过n-1条树枝连接,树下有一只玉兔,吴刚提着斧子站在一旁. 他恼恨一切同他争夺嫦娥的事物,所以他决定通过砍二叉树上的n-1条树枝来毁掉这颗二叉树. 妙 ...