SQL SERVER 如何处理带字母的自增列--【叶子】
- --需求说明:
- /*
- id col
- ---------- ----------
- AB00001 a
- AB00002 b
- --当再插入数据的时候让id自动变成AB00003
- */
- --1.求最大值法(高并发时不适用,只是介绍个思路)
- --测试数据
- if object_id('[macotb]') is not null
- drop table [macotb]
- create table [macotb] (id varchar(7),col varchar(1))
- insert into [macotb]
- select 'AB00001','a' union all
- select 'AB00002','b'
- declare @max varchar(7)
- select @max='AB'+right('00000'+ltrim(max(replace(id,'AB','')+1)),5) from [macotb]
- insert into [macotb] select @max,'c'
- select * from [macotb]
- /*
- id col
- ------- ----
- AB00001 a
- AB00002 b
- AB00003 c
- */
- --2.利用@@identity,分步处理
- if object_id('[macotb]') is not null
- drop table [macotb]
- create table [macotb] ([no] int identity,id varchar(7),col varchar(1))
- insert into [macotb]
- select 'AB00001','a' union all
- select 'AB00002','b'
- insert into [macotb](col) select 'c'
- update [macotb]
- set id='AB'+right('00000'+ltrim([no]),5) where [no]=@@identity
- select id,col from [macotb]
- /*
- id col
- ------- ----
- AB00001 a
- AB00002 b
- AB00003 c
- */
- --3.直接添加运算列
- if object_id('[macotb]') is not null
- drop table [macotb]
- create table [macotb]
- (
- [no] int identity,
- id as ('AB'+right('00000'+ltrim([no]),5)),
- col varchar(1)
- )
- insert into [macotb](col) select 'a' union all select 'b'
- select id,col from [macotb]
- /*
- id col
- ------------ ----
- AB00001 a
- AB00002 b
- */
- insert into [macotb](col) select 'c' union all select 'd'
- select id,col from [macotb]
- /*
- id col
- ------------ ----
- AB00001 a
- AB00002 b
- AB00003 c
- AB00004 d
- */
- --叶子建议使用第三种方式!
SQL SERVER 如何处理带字母的自增列--【叶子】的更多相关文章
- SQL Server FOR XML PATH 语句的应用---列转行
经常在论坛看到高手使用了 for xml path,由于是搜索一下,记录了详细的使用方法.在SQL Server中利用 FOR XML PATH 语句能够把查询的数据生成XML数据,下面是它的一些应用 ...
- SQL Server分区表,能否按照多个列作为分区函数的分区依据(转载)
问: Hi, I have a table workcachedetail with 40 million rows which has 8 columns.We decided to partiti ...
- Sql Server插入数据并返回自增ID,@@IDENTITY,SCOPE_IDENTITY和IDENT_CURRENT的区别
预备知识:SQLServer的IDENTITY关键字IDENTITY关键字代表的是一个函数,而不是identity属性.在access里边没有这个函数,所以在access不能用这个语句.语法:iden ...
- Sql Server插入数据并返回自增ID,@@IDENTITY,SCOPE_IDENTITY和IDENT_CURRENT的区别(转载)
预备知识:SQL Server的IDENTITY关键字IDENTITY关键字代表的是一个函数,而不是identity属性.在access里边没有这个函数,所以在access不能用这个语句.语法:ide ...
- SQL Server事务回滚对自增键的影响
SQL Server事务回滚时是删除原先插入导致的自增值,也就是回滚之前你你插入一条数据导致自增键加1,回滚之后还是加1的状态 --如果获取当前操作最后插入的identity列的值:select @@ ...
- SQL SERVER 自带系统存储过程分类
目录存储过程 用于实现 ODBC 数据字典功能,并隔离 ODBC 应用程序以使其不受基础系统表更改的影响. 变更数据捕获存储过程 用于启用.禁用.或报告变更数据捕获对象. 游标存储过程 用于实现游标变 ...
- Sql Server-使用Sql Server自带的分词功能实现字段关键词提取(分词能力很低,慎用)
“创建全文索引 启动服务 在SQL Server配置管理工具中,找到'SQL Full-text Filter Daemon Launcher'服务用本地用户启动. 创建全文目录 打开需要创建全文目录 ...
- SQL Server 创建表 添加主键 添加列常用SQL语句
--删除主键 alter table 表名 drop constraint 主键名 --添加主键 alter table 表名 add constraint 主键名 primary key(字段名1, ...
- SQL Server 创建表 添加主键 添加列常用SQL语句【转】
--删除主键alter table 表名 drop constraint 主键名--添加主键alter table 表名 add constraint 主键名 primary key(字段名1,字段名 ...
随机推荐
- [CODECHEF]LCM
题意:询问满足$1\leq x\leq n,1\leq y\leq m$且$x,y$均无平方因子的有序对$(x,y)$的$[x,y]$之和,多组数据 以下假设$n\leq m$,设$S(n)=\fra ...
- 【最大流Dinic模板】HDU1532&POJ1273-Drainage Ditches(16/3/6更正)
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #inc ...
- NNVM代码阅读
op.h #define DMLC_ATTRIBUTE_UNUSED __attribute__((unused)) __attribute__((unused)):通常,如果声明了某个变量,但从未对 ...
- idea创建多个Module
练习不同的算法时,如果不断的创建工程未免过于麻烦,可以使用在一个工程下创建多个Module的方式,编写多种不同的算法,这些模块互相独立,都有一个入口函数(main),并且,对于创建好的Module,如 ...
- 如何通俗理解——>集群、负载均衡、分布式
转自:周洲 (Julie) 在“高并发,海量数据,分布式,NoSql,云计算......”概念满天飞的年代,相信不少朋友都听说过甚至常与人提起“集群,负载均衡”等,但不是所有人都有机会真正接触到这些技 ...
- mysql原创博客
http://blog.itpub.net/15480802/viewspace-1755100/
- java 多线程处理一个list的集合
原文:http://blog.csdn.net/jenny8080/article/details/52100312 import java.util.ArrayList; import java.u ...
- OpenLayers2中的事件_以Popup为例
SATURDAY, 21 MARCH 1-Preface 前几天阅读学习了OpenLayers'Cookbook中的第四章——Working with events. 从AFDS系统的开发项目进行至今 ...
- 小程序把图片转换成base64
1.首先需要到upng.js,然后upng.js需要pako.js,先一并下载了 2.然后就可以直接用了,具体代码如下: <!--pages/base/base.wxml--> <c ...
- [Todo]各种语言包管理工具
看到一篇文章不错: http://harttle.com/2015/05/29/pkg-manager.html 包管理和构建系统是现代的软件开发团队中必不可少的工具,也是Linux软件系统的常见组织 ...