sql 复杂自动编号错误批量修改方案
- [一篮饭特稀原创,转载请注明出自http://www.cnblogs.com/wanghafan/p/5133953.html]
前提:自动编号为18位,前4位是年份,中间10位是XXXX,最后四位是0001-9999的自动编号。
问题:某天发现2016年自动编号后四位从0001-0081后变为7328-8530,出现编号错乱问题(原因未知待查)。但数据需要马上批量重置,否则后续编号将继续错误。
方案:截取2016年份的前14位拼接后4位正确自动编号。实现如下:
- --查询2016年我司项目编号,查看后四位是否正确
- SELECT MyProjectNo,SUBSTRING(MyProjectNo,15,4) FROM dbo.ProjectT WHERE MyProjectNo LIKE '2016%' ORDER BY SUBSTRING(MyProjectNo,15,4)
- --查询正确编号
- SELECT MyProjectNo AS '错编号',SUBSTRING(MyProjectNo,15,4) AS '错编号后四位',LEFT(MyProjectNo,14) AS '对编号前14位',
- right(''+CAST(row_number() over (order by SUBSTRING(MyProjectNo,15,4)) AS VARCHAR(5)),4) AS '对编号后四位',
- (LEFT(MyProjectNo,14)+right(''+CAST(row_number() over (order by SUBSTRING(MyProjectNo,15,4)) AS VARCHAR(5)),4)) AS '对编号'
- FROM dbo.ProjectT
- WHERE MyProjectNo LIKE '2016%'
- ORDER BY SUBSTRING(MyProjectNo,15,4)
- --更新错误编号为正确(批量脚本)
- SELECT 'UPDATE dbo.ProjectT SET MyProjectNo='''+
- (LEFT(MyProjectNo,14)+right(''+CAST(row_number() over (order by SUBSTRING(MyProjectNo,15,4)) AS VARCHAR(5)),4))
- +''' WHERE MyProjectNo='''+MyProjectNo+''''
- FROM dbo.ProjectT
- WHERE MyProjectNo LIKE '2016%'
- ORDER BY SUBSTRING(MyProjectNo,15,4)
执行(批量脚本)实现数据重置。
sql 复杂自动编号错误批量修改方案的更多相关文章
- linux '--stdin'错误 -批量修改密码
虚拟机:VMware虚拟机 系统:Linux ubuntu 4.4.0-31-generic #50~14.04.1-Ubuntu SMP Wed Jul 13 01:07:32 UTC 2016 ...
- SQL 查找重复项及批量修改数据成固定格式
1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from peoplewhere peopleId in (select peopleId from ...
- MYSQL批量修改表前缀与表名sql语句
修改表名 ALTER TABLE 原表名 RENAME TO 新表名; 一句SQL语句只能修改一张表 show tables; 1. SELECT CONCAT( 'ALTER TABLE ', ta ...
- 【转】SQL 2008 Insert返回自动编号id三种方法比较
SQL Server 2008中,insert数据的时候返回自动编号的id,有三种方法实现SCOPE_IDENTITY.IDENT_CURRENT 和 @@IDENTITY, 它们都返回插入到 IDE ...
- sql取逗号前后数据与批量修改某一字段某一值
sql取逗号后的值 SELECT SUBSTRING_INDEX(字段,) FROM 表名 sql取逗号前的值 SELECT SUBSTRING_INDEX(字段,) FROM 表名 批量修改 UPD ...
- Sql批量修改帝国cms文章发布时间(需unix时间,否则会变为1970-01-01)
在迁移网站时,有时我们需要将帝国cms文章发表时间批量修改为当前时间,在帝国cms后台→系统设置→备份与恢复数据→执行sql语句: update phome_ecms_news set newstim ...
- 批量插入,批量修改的sql
sql 1 批量插入 <insert id="batchInsert" useGeneratedKeys="true" parameterType=&q ...
- sql批量修改wordpress文章发布时间
有时为了体现wordpress文章的更新程度,会在后台那边重新设置发布时间,有没更简单的方法呢?用sql批量修改wordpress文章发布时间怎么操作呢? UPDATE `wp_posts` SET ...
- sql批量修改wordpress网站的文章发布状态
wordpress批量导入文章的时候,有些文章的状态可能会缺失,例如“mis scheduled”.draft.future等几种状态,如何用sql批量修改wordpress网站的文章发布状态呢? 点 ...
随机推荐
- jquery自动生成二维码
把下面的jquery代码放到想要在当前页面上面生成二维码: 代码如下: <script type="text/javascript">var _qrContent='' ...
- 关于activiti流程通过、驳回、会签、转办、中止、挂起等核心操作功能的封装
http://blog.csdn.net/aochuanguying/article/details/7594197 package com.famousPro.process.service.imp ...
- ###Fedora下安装Retext
使用Markdown. #@date: 2012-05-07 #@author: gr #@email: forgerui@gmail.com 因为习惯了Markdown的简单,所以需要在自己的Fed ...
- 用法简单的图片和视频播放的框架Demo
最近在恶补自己不足的基础知识,偶然在一个QQ群里看到作为同行业的大神们在开源自己的代码.并且在炫耀说让我们找Bug,于是出于好奇就看了下,点开了一个关于图片和视频播放的Demo.也就是接下来我要说的这 ...
- C#break、continue、return、goto
1.break break语句会使运行的程序立即退出包含在其中的最内层循环(结束此次循环且结束该循环控制体)或者switch语句 ; ; j < ; j++) { i++; )break; Co ...
- java多线程 join方法以及优先级方法
/*join:当A线程执行到了B线程的.join()方法时,A就会等待.等B线程都执行完,A才会执行. join可以用来临时加入线程执行. 1.线程使用join方法,主线程就停下,等它执行完,那么如果 ...
- 09_httpclient测试SOAP协议
[工程截图]注意:无需使用Wsimport生成客户端代码 [HttpClient.java] import java.io.ByteArrayOutputStream; import java.io. ...
- Oracle PL/SQL 事物处理 银行转账
Oracle数据库中的事务处理:添加,修改,删除时需要使用事务处理(显示事务). 1.事务的分类显示事务(添加,修改,删除)和隐式事务(除了添加,修改,删除). 2.事务的执行方式:自动提交(jdbc ...
- hanoi双塔
汉诺塔,经典的递归. 经典的汉诺塔游戏相信很多同学都会玩的,规则就不用赘述,百科一下就OK.有三个柱子A,B,C,A柱子上套有n个大小不等的盘子,任意两个盘子,上面的盘子一定小于下面的盘子.现在请你编 ...
- [leetcode] 407. Trapping Rain Water II
https://leetcode.com/contest/6/problems/trapping-rain-water-ii/ 看到这题,我很高兴,因为我做过!哈哈!其实我现在也写不出来,知道大概思想 ...