- 浏览: 424956 次
- 性别:
- 来自: 唐山
文章分类
最新评论
-
hautbbs:
谢谢分享!
ASP.NET 导出Excel 和csv -
hautbbs:
感谢分享!
ASP.NET 导出Excel乱码的终极解决 -
wyf:
zcl920 写道只能说 看不懂。要发就发全 取一段出来 有什 ...
图片上绘制文字换行处理 -
zcl920:
只能说 看不懂。要发就发全 取一段出来 有什么用。
图片上绘制文字换行处理 -
380086154:
有用,谢谢。
js比较日期
1: 自增列 类型为:int identity(1,1) 当然也可以是bigint,smallint eg: create table tbName(id int identity(1,1),description varchar(20)) 或在用企业管理器设计表字段时,将字段设为int,将标识设为是,其它用默认即可 IDENTITY (给SQL 的 select 语句添加一个自动递增的ID字段) select id1=identity(int,1,1) , * into #test from tb select * from #test @@identity是表示的是最近一次向具有identity属性(即自增列)的表插入数据时对应的自增列的值,是系统定义的全局变量。一般系统定义的全局变量都是以@@开头,用户自定义变量以@开头。比如有个表A,它的自增列是id,当向A表插入一行数据后,如果插入数据后自增列的值自动增加至101,则通过select @@identity得到的值就是101。使用@@identity的前提是在进行insert操作后,执行select @@identity的时候连接没有关闭,否则得到的将是NULL值。 我的例子:--查询时加子增列(需要用到) select identity(int,1,1) as id,newid() as Guid,qq into #tp from QQ--(QQ(qq(nvarchar(11)))) select * from #tp drop table #tp select @@identity 2: 查询时加序号: a:没有主键的情形: (注意语法:Select identity(int,1,1) as iid,* into #tmp from TableName ) Select identity(int,1,1) as iid,* into #tmp from TableName Select * from #tmp Drop table #tmp b:有主键的情形: Select (Select sum(1) from TableName where KeyField <= a.KeyField) as iid,* from TableName a 3:生成自增序列号的表 eg: 生成一列0-30的数 Select top 30 (select sum(1) from sysobjects where name<= a.name)-1 as id from sysobjects a 当然,可能sysobjects 中没有这么多条记录,比如只有100条,我需生成1-800的序列号 如下处理: Select (Select sum(1) from (Select top 800 a.name as name1,b.name as name2 from sysobjects a ,sysobjects b) cc where name1<= dd.name1 and name2 <= dd.name2 ) from (Select top 800 a.name as name1,b.name as name2 from sysobjects a ,sysobjects b) dd 应用举例 eg1: create table t(日期 char(8),请假人数 int) insert t select '20031001',3 Union all select '20031003',2 Union all select '20031004',1 Union all select '30031031',5 要列出2003年10月每一天的请假人数,若没有,以0表示。 Select convert(char(8),dateadd(day,id,'20031001'),112),IsNull(t.请假人数,0) from (Select top 31 (select sum(1) from sysobjects where name<= a.name)-1 as id from sysobjects a) bb left join t on convert(char(8),dateadd(day,id,'20031001'),112) = t.日期 eg2: 生成随机考勤打卡资料: declare @r int --得到要处理的记录数 set @r=900 --创建得到随机时间的临时表 create table #tb(id int identity(1,1),dt1 datetime,dt2 datetime,dt3 datetime,dt4 datetime,dt5 datetime,dt6 datetime) --生成随机时间 declare @sql varchar(8000) set @sql='insert into #tb(dt1,dt2,dt3,dt4,dt5,dt6) select top '+cast(@r as varchar)+' dateadd(ss,rand(a.id)*1800,''07:30''), dateadd(ss,rand(a.id+1)*400,''11:30''), dateadd(ss,rand(a.id+2)*1600,''13:00''), dateadd(ss,rand(a.id+3)*300,''17:30''), dateadd(ss,rand(a.id+4)*800,''17:45''), dateadd(ss,rand(a.id+5)*250,''20:00'') from(select top 100 id from sysobjects) a, (select top 9 id from sysobjects) b order by newid() exec(@sql) 当然,如果将07:30 11:30 ...这些时间改成排班时间就更好了。 4: 好多单号都是自动增长,但又不能用自增列代替 eg: P031106001 -- 第一位P表示采购单,031106表示日期,后三位是流水号。 如下处理:(编号规则不同时稍加修改即可) 先建一个自定义函数 create function getDH() returns char(10) As begin declare @dh1 char(10),@dh2 char(10) select @dh1 = max(dh) from tableName Set @dh1 = IsNull(@dh1,'P000000000') set @dh2 = Left(@dh1,1) + right(convert(varchar(8),getdate(),112),6) + '001' if @dh1 >= @dh2 begin set @dh2 = left(@dh1,7) + right('000'+ cast(cast(right(@dh1,3) as int)+1 as varchar),3) end return(@dh2) end /******** Usage: select dbo.getdh() *******/ 然后在字段默认值中填入 dbo.getdh() 4: 好多单号都是自动增长,但又不能用自增列代替 eg: P031106001 -- 第一位P表示采购单,031106表示日期,后三位是流水号。 如下处理:(编号规则不同时稍加修改即可) 因在自定义函数内不能用getdate(),先建一个视图 create view vGetdate as select getdate() as today 先建一个自定义函数 create function getDH() returns char(10) As begin declare @dh1 char(10),@dh2 char(10) select @dh1 = max(dh) from tableName Set @dh1 = IsNull(@dh1,'P000000000') select @dh2 = Left(@dh1,1) + right(convert(varchar(8),today,112),6) + '001' from vGetdate if @dh1 >= @dh2 begin set @dh2 = left(@dh1,7) + right('000'+ cast(cast(right(@dh1,3) as int)+1 as varchar),3) end return(@dh2) end /******** Usage: select dbo.getdh() *******/ 然后在字段默认值中填入 dbo.getdh() --自已做标识列的例子: --创建得到最大id的函数 create function f_getid() returns int as begin declare @id int select @id=max(id) from tb set @id=isnull(@id,0)+1 return(@id) end go --创建表 create table tb(id int default dbo.f_getid(),name varchar(10)) go --创建触发器,在删除表中的记录时,自动更新记录的id create trigger t_delete on tb AFTER delete as declare @id int,@mid int select @mid=min(id),@id=@mid-1 from deleted update tb set id=@id,@id=@id+1 where id>@mid go --插入记录测试 insert into tb(name) values('张三') insert into tb(name) values('张四') insert into tb(name) values('张五') insert into tb(name) values('张六') insert into tb(name) values('张七') insert into tb(name) values('张八') insert into tb(name) values('张九') insert into tb(name) values('张十') --显示插入的结果 select * from tb --删除部分记录 delete from tb where name in('张五','张七','张八','张十') --显示删除后的结果 select * from tb --删除环境 drop table tb drop function f_getid
发表评论
-
C#生成唯一值的方法
2015-07-09 11:19 3948使用1、MaxId表存储各表的MaxId值 专门一个 ... -
sql 生成(c#model类)代码的存储过程
2015-05-09 18:57 748GO /****** 对象: StoredProcedu ... -
C#校验sql是否合法,不去执行sql语句
2015-04-17 10:10 1229public bool ValidateSQL(string ... -
sqlserver in 和Exists 用法
2013-12-13 14:12 1543例子如下(即exists返回where后2个比较的wher ... -
Win8安装SQL Server 2008“性能计数器注册表配置单元一致性”失败的解决办法
2013-12-02 23:19 1230在进行数据库安装检测时总是有一点通不过,提示“性能计数器注册 ... -
sql to xml
2013-04-18 14:52 724SQL Server FOR XML PATH 语句的应用 ... -
判断两个时间交叉
2012-02-23 14:44 1953SQL中常常要判断两个 ... -
sql生成流水号
2012-02-23 12:41 1780--思路:将表某一字段的默认值设置成自定义函数,该自定义 ... -
Sql存储过程分页性能
2011-12-29 13:36 808在项目中,我们经常遇到或用到分页,那么在大数据量(百万级以上) ... -
sql优化
2011-12-22 11:28 747(1) 选择最有效率的 ... -
sqlserver数据库镜像
2011-12-20 09:58 972附件 -
提高sql性能
2011-08-04 12:36 709从 INSERT 返回 IDENTITY 我决定从遇到许 ... -
查询表主键sql
2010-09-01 16:41 16881:利用SQL自带的存储过程 EXEC sp_pkeys ... -
根据汉字获取拼音
2010-08-17 15:10 1210create function [dbo].[fGetPy]( ... -
收藏 不显示删除回复显示所有回复显示星级回复显示得分回复 SQL中的CASE使用方法【转】
2010-05-26 14:48 757Case具有两种格式。简单Case函数和Case搜索函数。 ... -
跨数据库触发器
2010-04-22 17:30 2068可以运用这条语句 select * from OPEND ... -
SQL Server 2005中创建CLR存储过程
2010-02-08 14:49 1432一、打开vs2005 建立数据库项目。 using ... -
获取拼音首字母
2010-02-04 17:37 917create function fun_getPY(@str ... -
测试proc
2010-01-06 22:07 862Create proc Pro_TGWTOByQSF as ... -
sql 相当于split的函数
2010-01-06 21:59 1173create function Fnsplit(@Sou ...
相关推荐
主要介绍了oracle生成动态前缀且自增号码的函数,需要的朋友可以参考下
如何通过C#实现单据号码的自动增加
功能说明: 实现VC工程的版本号自增 它有如下特点: 1. 它修改.rc文件源文件,便于文件归档; 2. 当工程无修改时,版本号维持不变,工程将不会生成新文件; 3. 支持配置自增的字段;(如A.B.C.D, 命令行-pos参数为4...
AutoIncreaseVer_VC项目的版本号自增工具源码_源码
题目:写一段代码,扩展 console.log,在每个输出前添加一个自增号,比如:解答:ES6 解法:// ES6 剩余参数// 箭头函数节省代码console
GradleSample一个Android Studio项目的gradle模板,包括自动签名,版本号自增,多渠道打包
vc每次编译时,自动递增版本号信息 自己再vs2005下试验过,没有问题 使用方法: 将modifyver.exe拷到系统目录下(例如windows下) 在vc的预生成事件中加上“modifyver.exe $(ProjectName).rc” 思路是修改rc文件,用...
SQL,C#,不重复编码,订单号 1. C#后台封装方法 通用获取最大单据编号, 可以生成以下3个类型的单号 CG1603-000001 CG201603-000001 CG20160321-000001
该工具代码包括两个功能:vc工程版本号自动更新、对pe文件进行检查和计算。 调用命令行格式: VCMakeHelper.exe /UpdateVersion:"E:\111\MFCApplication2\MFCApplication2.rc" VCMakeHelper.exe /UpdateChecksum:...
vc每次编译时,自动递增版本号信息,vs2005下试验过。 环境 需要在本机安装TortoiseSVN 第一步 在项目的.rc文件中搜索VS_VERSION_INFO VERSIONINFO 按照下面例子更改 VS_VERSION_INFO VERSIONINFO #ifdef _AUTO_...
火龙果软件工程技术中心 在《介绍一下SVN》一文中,我提到了自动递增版本号的功能,现在就来具体说明一下实现方法。虽然标题中说的是“使用SVN”,但我们实际用的是SVN的客户端工具TortoiseSVN中的SubWCRev程序。...
1、SQL server中创建表,带有自增列。 create table Test_Table(Id int Identity(1,1), Name varchar(20)); 这里用到了IDENTITY 关键字。IDENTITY(a,b),a b均为正整数,a表示开始数,b表示步长。 IDENTITY(1,1)就...
在做《机房收费系统》的时候,有的表需要添加自增列,在添加新纪录时自动添加一个序号。下面我给大家介绍两种添加方法: 一、通过T-SQL代码. 代码如下: alter table 表名 add 列名 int IDENTITY(1,1) NOT NULL 这里...
mysql创建流水号,以前也一直不知道怎么写,最后我知道了,然后我保存了下来,用的纯sql语句,不需要后台java或者别的语言去生成。直接数据库的sql语句就行了。我设置的积分是1分。要是增加了,就是CSDN增加的,
JAVA生成订单号(日期+流水号) java按日期加流水号方式生成订单号,已经测试过,可递增方式生成。
自己写的一点小代码,多有不当,请指正! public string GetAutoDocNo() { string DocNo = "AD"; string today = DateTime.Today.Date.ToString("yyyyMMdd", DateTimeFormatInfo.InvariantInfo);...
NULL 博文链接:https://yuhuiblog695685688425687986842568269.iteye.com/blog/2428458
自增主键没有持久化是个比较早的bug,这点从其在官方bug网站的id号也可看出(https://bugs.mysql.com/bug.php?id=199)。由Peter Zaitsev(现Percona CEO)于2003年提出。历史悠久且臭名昭著。 首先,直观的重现下。...