环境:
- window10
- sqlserver2014
- vs2022
- .net core 3.1
参考:
根据微软解释,这是一个16 字节(即:128bit位) 的GUID。
所以它本质还是二进制数据,和c#中的guid是一个意思,只不过我们平时以字符串的形式观察它。
关于c#中guid和string的转换,参考:《c#:guid和string互转 &guid不区分大小写》
在sqlserver中可以通过:NEWID()
和NEWSEQUENTIALID()
生成guid,只不过,NEWSEQUENTIALID()
是为create/alter table 的列类型default准备的,如:
create table test4(
id int identity,
name varchar(50),
guid uniqueidentifier default(NEWSEQUENTIALID())
)
--插入数据
insert into test4(name) values('小明'),('小红')
insert into test4(name,guid) values('小蓝',NEWID())
insert into test4(name,guid) values('小刚','a66cc049-edee-426d-9aa2-dea498149b8d')
insert into test4(name,guid) values('小刚','{a66cc049-edee-426d-9aa2-dea498149b8d}')
-- 查询数据
在c#中,我们可以直接使用 guid? 接受ado.net 的返回值,因为ado.net 读取时就已经解析成guid了。
最后,GUID本身是二进制数据(128个bit位),并不存在大小写问题!