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网站的文章发布状态呢? 点 ... 
随机推荐
- Json-lib - java.util.Date 转换问题
			使用 JSON-lib 将 java.util.Date 对象直接转换成 JSON 字符串时,得到的通常不是想要格式: System.out.println(JSONSerializer.toJSON ... 
- namenode无法自动切换的问题
			主namenode 为standly状态,备namenode为active,kill备namenode,主namenode能正常切换为active.但是主namenode为active,备nameno ... 
- 设计模式------STRATEGY(策略模式)
			http://blog.csdn.net/wuzhekai1985/article/details/6665197.仅供参考. 策略模式:实现替换功能,如cache替换算法:当发生Cache缺失时,C ... 
- C# .NET 获取枚举值的自定义属性(特性/注释/备注)信息
			一.引言 枚举为我看日常开发的可读性提供的非常好的支持,但是有时我们需要得到枚举值得描述信息或者是注释(备注)信息 比如要获得 TestEmun.aaa 属性值得备注 AAA,比较不方便得到. pub ... 
- 鼠标点击input时,placeholder中的提示信息消失
			html代码: <input type="text" placeholder="多个关键词空格隔开"> 鼠标点击input时,placeholder ... 
- [Guava官方文档翻译] 7. Guava的Immutable Collection(不可变集合)工具 (Immutable Collections Explained)
			我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3538666.html ,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体 ... 
- treeview OnSelectedNodeChanged js的方法
			可以在OnSelectedNodeChanged的cs中,对node赋值如此: nod.Text = "<span onclick=''>" + node名称 + &q ... 
- C++字符串函数与C字符串函数比较
			赋值拷贝: #include <iostream> #include <string> using namespace std; void main(){ string a=& ... 
- jQuery实例-简单选项卡-【一些常见方法(2)-练习】
			<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ... 
- Oracle if else if  for case
			------------------游标+for+if else if DECLARE cursor s_cursor is SELECT * from emp;--定义游标 begin for r ... 
