现需由系统产生一种唯一标识记录的ID字段,希望各位高手提供下...位数不限,但不能出现重复的概率...
解决方案 »
- ASP.NET MVC中如何返回一个DataSet给VIEW显示?
- 请问在asp.net里面,http长连接怎么设置啊?
- 搞技术首先要学会用脑,画脑图编程序 (转)
- 刷新页面问题
- 请大家帮我看看这个问题,大家应该都遇见过的,感谢!!
- 不拖放datagrid到窗口,用代码生成DATAGRID并绑定数据后为什么datagrid没有显示出来?
- 日历控件几个问题各位老大多多帮助~!
- 请帮忙看看多参数传递错误出在哪?
- 执行代码创建IIS虚拟目录,出错“拒绝访问”?求助!!
- 请问怎样获得NetworkStream流的长度?(急)
- 关于一个表拼接后添加到一个新DataTable的问题
- MVC VS2008+sql2005 增删改查分页 实例(最好的是完整)
use test
go
if exists(select * from sysobjects where name='P_Order' and type='P' )
drop proc P_order
go
create proc P_Order
@MaxId int,
@Date varchar(10),
@NewId varchar(20)
as
begin
select @MaxId=Id from TB_Order
select @Date=CONVERT(VARCHAR(10),GETDATE(),112)
set @NewId=@Date+ right(cast(power(10,4) as varchar)+@MaxId,4)
insert into dbo.test([Name],EName,[NewId]) values('lee','lfs',@NewId)
endexec P_Order
根据最大值,时间,random生成
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<script type="text/javascript">
function UUID(){
this.id = this.createUUID();
}UUID.prototype.valueOf = function(){ return this.id; }
UUID.prototype.toString = function(){ return this.id; }UUID.prototype.createUUID = function(){
var dg = new Date(1582, 10, 15, 0, 0, 0, 0);
var dc = new Date();
var t = dc.getTime() - dg.getTime();
var tl = UUID.getIntegerBits(t,0,31);
var tm = UUID.getIntegerBits(t,32,47);
var thv = UUID.getIntegerBits(t,48,59) + '1'; // version 1, security version is 2
var csar = UUID.getIntegerBits(UUID.rand(4095),0,7);
var csl = UUID.getIntegerBits(UUID.rand(4095),0,7); var n = UUID.getIntegerBits(UUID.rand(8191),0,7) +
UUID.getIntegerBits(UUID.rand(8191),8,15) +
UUID.getIntegerBits(UUID.rand(8191),0,7) +
UUID.getIntegerBits(UUID.rand(8191),8,15) +
UUID.getIntegerBits(UUID.rand(8191),0,15); // this last number is two octets long
return tl + tm + thv + csar + csl + n;
}UUID.getIntegerBits = function(val,start,end){
var base16 = UUID.returnBase(val,16);
var quadArray = new Array();
var quadString = '';
var i = 0;
for(i=0;i<base16.length;i++){
quadArray.push(base16.substring(i,i+1));
}
for(i=Math.floor(start/4);i<=Math.floor(end/4);i++){
if(!quadArray[i] || quadArray[i] == '') quadString += '0';
else quadString += quadArray[i];
}
return quadString;
}UUID.returnBase = function(number, base){
return (number).toString(base).toUpperCase();
}UUID.rand = function(max){
return Math.floor(Math.random() * (max + 1));
}function newUID(){
document.getElementById("txtUID").value = new UUID();
}
</script>
</HEAD><BODY>
<input type="text" id="txtUID" style="width:300px" value=""/>
<br/>
<input type="button" id="btnUID" value="Create UID" onclick="newUID();"/></BODY>
</HTML>
你可以参照它的算法
// This code example demonstrates the Guid.NewGuid() method.using System;class Sample
{
public static void Main()
{
Guid g;
// Create and display the value of two GUIDs.
g = Guid.NewGuid();
Console.WriteLine(g);
Console.WriteLine(Guid.NewGuid());
}
}/*
This code example produces the following results:0f8fad5b-d9cb-469f-a165-70867728950e
7c9e6679-7425-40de-944b-e07fc1f90ae7*/
加上3147483648u 也没什么特别用途,就是是为了让最终生成的数字不会是负数(+2147483648u其实就行),但+3147483648u 是保证其是10位数字。要不然会出现0000012345之类的数字,怕导存入数据库或excel中时丢失前面的0。(以前生成一批卡号时就曾经郁闷过,呵呵~)
要不简单点,来个自增。