[一篮饭特稀原创,转载请注明出自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 复杂自动编号错误批量修改方案的更多相关文章

  1. linux '--stdin'错误 -批量修改密码

    虚拟机:VMware虚拟机  系统:Linux ubuntu 4.4.0-31-generic #50~14.04.1-Ubuntu SMP Wed Jul 13 01:07:32 UTC 2016 ...

  2. SQL 查找重复项及批量修改数据成固定格式

    1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from peoplewhere peopleId in (select   peopleId  from ...

  3. MYSQL批量修改表前缀与表名sql语句

    修改表名 ALTER TABLE 原表名 RENAME TO 新表名; 一句SQL语句只能修改一张表 show tables; 1. SELECT CONCAT( 'ALTER TABLE ', ta ...

  4. 【转】SQL 2008 Insert返回自动编号id三种方法比较

    SQL Server 2008中,insert数据的时候返回自动编号的id,有三种方法实现SCOPE_IDENTITY.IDENT_CURRENT 和 @@IDENTITY, 它们都返回插入到 IDE ...

  5. sql取逗号前后数据与批量修改某一字段某一值

    sql取逗号后的值 SELECT SUBSTRING_INDEX(字段,) FROM 表名 sql取逗号前的值 SELECT SUBSTRING_INDEX(字段,) FROM 表名 批量修改 UPD ...

  6. Sql批量修改帝国cms文章发布时间(需unix时间,否则会变为1970-01-01)

    在迁移网站时,有时我们需要将帝国cms文章发表时间批量修改为当前时间,在帝国cms后台→系统设置→备份与恢复数据→执行sql语句: update phome_ecms_news set newstim ...

  7. 批量插入,批量修改的sql

    sql 1  批量插入 <insert id="batchInsert" useGeneratedKeys="true" parameterType=&q ...

  8. sql批量修改wordpress文章发布时间

    有时为了体现wordpress文章的更新程度,会在后台那边重新设置发布时间,有没更简单的方法呢?用sql批量修改wordpress文章发布时间怎么操作呢? UPDATE `wp_posts` SET ...

  9. sql批量修改wordpress网站的文章发布状态

    wordpress批量导入文章的时候,有些文章的状态可能会缺失,例如“mis scheduled”.draft.future等几种状态,如何用sql批量修改wordpress网站的文章发布状态呢? 点 ...

随机推荐

  1. 如何防止SWF文件被反编译

    这篇文章的标题所提出的问题的答案是“不可能”.至少对我来说是不可能的.借助适当的工具,我们可以反编译任何SWF文件.所以,不要将重要的信息置于SWF文件中.SWF文件中不要包含个人的帐号或者密码. 我 ...

  2. JAVA 中两种判断输入的是否是数字的方法__正则化_

    JAVA 中两种判断输入的是否是数字的方法 package t0806; import java.io.*; import java.util.regex.*; public class zhengz ...

  3. Asp.net 定时写入文本记录

    Asp.net 定时写入文本记录 public static string FileAddress = "c:\\TimerLog.txt"; protected void Pag ...

  4. Ext.Net学习笔记17:Ext.Net GridPanel Selection

    Ext.Net学习笔记17:Ext.Net GridPanel Selection 接下来是Ext.Net的GridPanel的另外一个功能:选择. 我们在GridPanel最开始的用法中已经见识过如 ...

  5. 第五篇、常用的SQL语句和函数介绍

    简介: 在使用到sqlite3的时候,常常需要写一些SQL语句,现将常用到的部分语句稍微总结以下,由于个人习惯,关键字用大写. 附: /*简单约束*/ CREATE TABLE IF NOT EXIS ...

  6. Razor引擎学习:RenderBody,RenderPage和RenderSection

    ASP.NET MVC 3 已经正式发布了,现在估计许多人都在拼命学,我也不能例外,刚刚看到了一篇文章,介绍了三个非常有用的方法:RenderBody,RenderPage和RenderSection ...

  7. 判断手机还是PC浏览器

    function goPAGE() { if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobi ...

  8. Curl的编译

    下载 curl的官网:https://curl.haxx.se/ libcurl就是一个库,curl就是使用libcurl实现的. curl是一个exe,也可以说是整个项目的名字,而libcurl就是 ...

  9. java三线程循环有序打印ABC

    迅雷笔试题: 编写一个程序,开启3个线程,这3个线程的ID分别为A.B.C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示:如:ABCABC….依次递推. 解决思路:每个线 ...

  10. 初识IO流之小型资源管理器

    初次接触到IO流,根据书本上的知识,加上自己的摸索,发现了一些好玩的事情.(书本上的知识或多或少,有时候不足以解决我们的问题!这时候我们就应该自己去求解!!! 所以我们学习的时候要抱有探索的精神,求知 ...