查看: 369|回复: 0

[文章教程] ASP多种方式创建唯一GUID值

[复制链接]
xuanxiao 发表于 2022-5-28 23:56:44 | 显示全部楼层 |阅读模式
GUID值可用于在数据库中或需要唯一数据字段的其他地方创建唯一数据条目。
由于这些示例不使用会话变量,因此这些示例还可在禁用会话状态的 Web 服务器上运行。


1.创建基于时间的简单 GUID
此示例使用当前年份、月、日、小时、分钟和秒创建一个基于 14 个字符的简单基于时间 GUID。 这允许您根据 GUID 对数据进行排序。

  1. <%@LANGUAGE="VBSCRIPT"%>
  2. <HTML>
  3.     <BODY>
  4.         <%
  5.             Response.Write "GUID = " & CreateGUID()

  6.             Function CreateGUID()
  7.                 Dim tmpTemp
  8.                 tmpTemp = Right(String(4,48) & Year(Now()),4)
  9.                 tmpTemp = tmpTemp & Right(String(4,48) & Month(Now()),2)
  10.                 tmpTemp = tmpTemp & Right(String(4,48) & Day(Now()),2)
  11.                 tmpTemp = tmpTemp & Right(String(4,48) & Hour(Now()),2)
  12.                 tmpTemp = tmpTemp & Right(String(4,48) & Minute(Now()),2)
  13.                 tmpTemp = tmpTemp & Right(String(4,48) & Second(Now()),2)
  14.                 CreateGUID = tmpTemp
  15.             End Function
  16.         %>
  17.     </BODY>
  18. </HTML>
复制代码

浏览器中运行,然后你会看到一个 GUID。 刷新页面时,可以看到 GUID 增量。

2.创建简单的时间偏移 GUID
此示例使用从 2000 年 1 月 1 日午夜 12:00 开始的时间偏移量创建一个 20 个字符的基于时间 GUID。 这允许您基于 GUID 对数据进行排序,并可以更新为使用任何其他日期作为基础。

  1.             Response.Write "GUID = " & CreateGUID()

  2.             Function CreateGUID()
  3.                 Dim tmpTemp1,tmpTemp2
  4.                 tmpTemp1 = Right(String(15,48) & CStr(CLng(DateDiff("s","1/1/2000",Date()))), 15)
  5.                 tmpTemp2 = Right(String(5,48) & CStr(CLng(DateDiff("s","12:00:00 AM",Time()))), 5)
  6.                 CreateGUID = tmpTemp1 & tmpTemp2
  7.             End Function
复制代码


3.创建一个更为唯一的时间偏移 GUID
此示例与创建简单的时间偏移 GUID 示例一样,创建一个基于时间的 GUID, 但此 GUID 长 25 个字符。 本示例从 2000 年 1 月 1 日午夜 12:00 开始,创建一个 20 个字符的偏移值(以秒数表示)并附加 5 个随机数。 这允许您基于 GUID 对数据进行排序,但允许具有更高的唯一性。 可以更新此日期以使用任何其他日期作为基准。

  1. Response.Write "GUID = " & CreateGUID()

  2.             Function CreateGUID()
  3.                 Randomize Timer
  4.                 Dim tmpTemp1,tmpTemp2,tmpTemp3
  5.                 tmpTemp1 = Right(String(15,48) & CStr(CLng(DateDiff("s","1/1/2000",Date()))), 15)
  6.                 tmpTemp2 = Right(String(5,48) & CStr(CLng(DateDiff("s","12:00:00 AM",Time()))), 5)
  7.                 tmpTemp3 = Right(String(5,48) & CStr(Int(Rnd(1) * 100000)),5)
  8.                 CreateGUID = tmpTemp1 & tmpTemp2 & tmpTemp3
  9.             End Function
复制代码


浏览器中运行此代码, 你会看到一个 GUID。 刷新页面时,可以看到 GUID 增量的前 20 个字符,最后五个字符是随机的。
运行结果:
  1. GUID = 0000007070976000088314840
复制代码


4.创建简单的随机 GUID


  1. Response.Write "GUID = " & CreateGUID()

  2.             Function CreateGUID()
  3.                 Randomize Timer
  4.                 Dim tmpCounter,tmpGUID
  5.                 Const strValid = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  6.                 For tmpCounter = 1 To 20
  7.                 tmpGUID = tmpGUID & Mid(strValid, Int(Rnd(1) * Len(strValid)) + 1, 1)
  8.                 Next
  9.                 CreateGUID = tmpGUID
  10.             End Function
复制代码


浏览器中运行代码, 你会看到一个 20 个字符的随机 GUID。 刷新页面时,你会看到值随机变化。
运行结果如下:
  1. GUID = 9X4DX6RFYUV5Z7NMJ3M1
复制代码


5.创建可变长度随机 GUID

  1.             Response.Write "<P>GUID = " & CreateGUID(10)
  2.             Response.Write "<P>GUID = " & CreateGUID(25)
  3.             Response.Write "<P>GUID = " & CreateGUID(50)

  4.             Function CreateGUID(tmpLength)
  5.                 Randomize Timer
  6.                 Dim tmpCounter,tmpGUID
  7.                 Const strValid = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  8.                 For tmpCounter = 1 To tmpLength
  9.                 tmpGUID = tmpGUID & Mid(strValid, Int(Rnd(1) * Len(strValid)) + 1, 1)
  10.                 Next
  11.                 CreateGUID = tmpGUID
  12.             End Function
复制代码

浏览器中运行此代码,你会看到一个 10 个字符、25 个字符和 50 个字符的随机 GUID。 刷新页面时,你会看到值随机变化。
运行结果如下:

  1. GUID = W0SMDFF782

  2. GUID = IH6B9TRU3EW6C66OY6611NLHW

  3. GUID = A1B45JR1WXV842BNRO68V4Q4PANFVSDVZFQYAYXBTYI6J0XDXA
复制代码


未完待续.....

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表

在线客服

售前咨询
售后咨询
服务热线
023-58418553
微信公众号