C# 和SQL server 中生成GUID 的方法 以及他们的之间的区别

全局唯一标识符(GUID,Globally Unique Identifier),是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。GUID 的总数达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。GUID一词有时也专指微软对UUID标准的实现。

在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。随机生成两个相同GUID的可能性是非常小的,但并不为0。所以,用于生成GUID的算法通常都加入了非随机的参数(如时间),以保证这种重复的情况不会发生。

GUID的标准形式为: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ,通过对这个形式的字符串常量进行转换,其中,每个 x 都是 0-9 或 a-f 范围内的十六进制数字。例如,6F9619FF-8B86-D011-B42D-00C04FC964FF 为有效的

在C#中:

在C#中 微软专门提供了一个Guid结构 来帮助人们生成GUID,命名空间为 System中 使用C#生成GUID的方法如下:

使用如下方法生成:

Guid.NewGuid()

如果要转换成为字符串使用,则可以使用如下方法:

 Guid.NewGuid().ToString(string format)

其中 format 指示如何格式化GUID的格式 可以有不同的参数"N","D","P","B",null,当选择null时使用默认的参数"D"
使用C#语言生成 如下:
	    string guid1 = Guid.NewGuid().ToString("N");
            string guid2 = Guid.NewGuid().ToString("D");
            string guid3 = Guid.NewGuid().ToString("P");
            string guid4 = Guid.NewGuid().ToString("B");

            Console.WriteLine("guid1 : {0}",guid1);
            Console.WriteLine("guid2 : {0}", guid2);
            Console.WriteLine("guid3 : {0}", guid3);
            Console.WriteLine("guid4 : {0}", guid4);

输出结果如下所示:

guid1 : d468954e22a145f8806ae41fb938e79e
guid2 : c05d1709-0361-4304-8b2c-58fadcc4ae08
guid3 : (d3a300a7-144d-4587-9e22-3a7699013f01)
guid4 : {3351ca09-5302-400a-aea8-2a8be6c12b06}


在SQL server中:

比较运算符可与 uniqueidentifier 值一起使用。不过,排序不是通过比较两个值的位模式来实现的。可针对 uniqueidentifier 值执行的运算只有比较运算(=、<>、<、>、<=、>=)以及检查是否为 NULL(IS NULL 和 IS NOT NULL)。不能使用其他算术运算符。除 IDENTITY 之外的所有列约束和属性均可对 uniqueidentifier 数据类型使用。
具有更新订阅的合并复制和事务复制使用 uniqueidentifier 列来确保在表的多个副本中唯一地标识行。
sql server中 生成 GUID的时候 使用如下方法生成:
NEWID()
具体使用方法如下:
-- Creating a local variable with DECLARE/SET syntax.
DECLARE @myid uniqueidentifier
SET @myid = NEWID()
PRINT 'Value of @myid is: '+ CONVERT(varchar(255), @myid)

输出结果为:

Value of @myid is: 9A09488E-7D1D-4995-9A7D-3AFB736CA3FE

注意,NEWID 对每台计算机返回的值各不相同。所显示的数字仅起解释说明的作用。


从上面可以看出 要想使用SQL server和C#中生成一样格式,在C#中要使用默认的参数"D",才能使SQL server 和C#中的格式一致



参考资料:

百度百科

SQL帮助文档

.Net Framework 类文档

猜你喜欢

转载自blog.csdn.net/u012183487/article/details/77503386