- 浏览: 436660 次
- 性别:
- 来自: 唐山
文章分类
最新评论
-
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 4048使用1、MaxId表存储各表的MaxId值 专门一个 ... -
sql 生成(c#model类)代码的存储过程
2015-05-09 18:57 806GO /****** 对象: StoredProcedu ... -
C#校验sql是否合法,不去执行sql语句
2015-04-17 10:10 1288public bool ValidateSQL(string ... -
sqlserver in 和Exists 用法
2013-12-13 14:12 1638例子如下(即exists返回where后2个比较的wher ... -
Win8安装SQL Server 2008“性能计数器注册表配置单元一致性”失败的解决办法
2013-12-02 23:19 1276在进行数据库安装检测时总是有一点通不过,提示“性能计数器注册 ... -
sql to xml
2013-04-18 14:52 764SQL Server FOR XML PATH 语句的应用 ... -
判断两个时间交叉
2012-02-23 14:44 2040SQL中常常要判断两个 ... -
sql生成流水号
2012-02-23 12:41 1867--思路:将表某一字段的默认值设置成自定义函数,该自定义 ... -
Sql存储过程分页性能
2011-12-29 13:36 844在项目中,我们经常遇到或用到分页,那么在大数据量(百万级以上) ... -
sql优化
2011-12-22 11:28 808(1) 选择最有效率的 ... -
sqlserver数据库镜像
2011-12-20 09:58 1008附件 -
提高sql性能
2011-08-04 12:36 758从 INSERT 返回 IDENTITY 我决定从遇到许 ... -
查询表主键sql
2010-09-01 16:41 17381:利用SQL自带的存储过程 EXEC sp_pkeys ... -
根据汉字获取拼音
2010-08-17 15:10 1239create function [dbo].[fGetPy]( ... -
收藏 不显示删除回复显示所有回复显示星级回复显示得分回复 SQL中的CASE使用方法【转】
2010-05-26 14:48 781Case具有两种格式。简单Case函数和Case搜索函数。 ... -
跨数据库触发器
2010-04-22 17:30 2103可以运用这条语句 select * from OPEND ... -
SQL Server 2005中创建CLR存储过程
2010-02-08 14:49 1490一、打开vs2005 建立数据库项目。 using ... -
获取拼音首字母
2010-02-04 17:37 973create function fun_getPY(@str ... -
测试proc
2010-01-06 22:07 900Create proc Pro_TGWTOByQSF as ... -
sql 相当于split的函数
2010-01-06 21:59 1198create function Fnsplit(@Sou ...
相关推荐
Oracle数据库在处理自增号码时,常常需要生成带有特定前缀的唯一编号,这在诸如生成邀请码、订单号或序列号等场景中非常常见。本文将深入解析Oracle中创建动态前缀且自增号码的函数,以满足这类需求。 首先,让我们...
### 如何通过C#实现单据号码的自动增加 在许多业务系统中,单据编号的自动生成是一项常见的需求。合理的编号规则不仅能够方便管理和追踪,还能体现系统的专业性和规范性。本文将详细介绍如何利用C#语言来实现单据...
字符串的自增,自定义格式,可实现项目中由程序实现VARCHAR类型的主键自增
注意,启用延迟环境变量扩展后,变量的引用需使用感叹号而不是百分号。 以上两种方法都可以有效地在BAT脚本中实现变量的自增。第一种方法适用于不需要在循环体内修改变量的情况,而第二种方法则提供了更大的灵活性...
通常,流水号可以是自增的整数,每次插入新记录时自动递增。在SQL数据库中,可以通过创建一个带有`IDENTITY`属性的字段来实现这一功能。例如: ```sql CREATE TABLE MyTable ( Id INT IDENTITY(1,1) PRIMARY KEY, ...
在 Oracle 数据库中,与许多其他关系型...这种方法适用于那些需要自动生成唯一标识符的情况,比如主键或业务流水号。需要注意的是,虽然这种方法很实用,但在高并发环境下可能需要考虑序列值的并发问题,以及性能优化。
一种常见的方法是基于时间戳和自增序列结合,确保每次生成的流水号都是唯一的。例如,我们可以使用当前时间的毫秒数加上一个自增序列,通过一定的格式化处理,形成易于识别的流水号。在C#中,可以利用`DateTime.Now....
本篇文章将详细介绍如何创建一个基于自增ID的唯一编号类,并通过算法说明和实例演示来阐述其工作原理。 首先,我们要明确目标:创建一个PHP类,它接受自增ID、自定义前缀和位数作为参数,然后生成一个唯一的编号。...
SQL Server 中按年月日生成日期型自增编码 本文档介绍了在 SQL Server 中生成日期型自增编码的方法,通过创建两个函数 `GenCustomCode` 和 `GenCustomID`,可以生成按年月日的日期型自增编码。该方法可以应用于各种...
### Oracle 使用序列创建自增字段 在数据库设计与开发中,自增字段是十分常见的需求之一,尤其是在需要为每一行记录自动分配一个唯一编号的情况下。Oracle 数据库通过序列(Sequence)这一特性支持自增字段的实现。...
初始化原子整型为0,每次生成订单号时自增1,然后取其值作为流水号: ```java AtomicInteger sequence = new AtomicInteger(0); int seqNum = sequence.incrementAndGet(); ``` 流水号可以添加前导0,使其保持...
功能说明: 实现VC工程的版本号自增 它有如下特点: 1. 它修改.rc文件源文件,便于文件归档; 2. 当工程无修改时,版本号维持不变,工程将不会生成新文件; 3. 支持配置自增的字段;(如A.B.C.D, 命令行-pos参数为4...
"AutoIncreaseVer_VC项目的版本号自增工具源码"是一个专门针对这种情况设计的实用工具,它能够自动化处理VC项目中的版本号更新,提高开发效率。 该工具的核心功能是自动增加版本号,这对于持续集成和发布新版本的...
2. 订单ID:电子商务平台中,每个订单的订单号一般也是自增生成。 3. 日志记录:在日志表中,自增主键可以方便地按照插入顺序进行追踪。 四、主键自增的注意事项 1. 数据库性能:自增主键有利于B树索引的构建,提高...
使用命令查看自增字段当前值,并将其修改为大于当前值的一些,以跳过有错误的记录号。 2. 修改自增字段类型 如果自增字段类型设置不正确,需要将其修改为正确的类型,例如将Tinyint类型修改为INT或BIGINT类型。 ...
这可能包括设置一个自增的键(key),每次生成订单号时递增该键的值,以保证唯一性。 `JedisTemple.java`可能是对Jedis库的封装,Jedis是Java操作Redis的一个常用客户端。这个类可能包含了各种Redis操作的模板方法...
### 三、程序生成自增ID号 为了在程序中使用自定义的自增ID,需要编写相应的ABAP代码。下面是一个示例代码段,展示了如何通过调用SAP内置函数模块来实现自增ID的生成: ```abap DATA: p_id TYPE zaccid. DATA: p_...
版本号通常由三部分组成:主版本号、次版本号和修订号,有时还会添加一个内部构建号。例如,1.2.3或1.2.3.4。在VS2010中,手动更新这些数字可能会导致错误和不一致,特别是当项目团队成员众多时。此插件的引入解决了...