SQL Server中是否有UniqueIdentifier的验证规则?

时间:2011-09-22 16:54:34

标签: sql-server tsql sql-server-2008 guid uniqueidentifier

假设我有一些SQL按类型为UniqueIdentifier的列过滤数据。

Select * from core.Pages WHERE PageId = '1DC4E71C-4E68-489D-A837-2C9BA8DCC1DC' (这个guid是由NewID()函数生成的)

出于快速测试/健全性检查的目的,我想我会用'x'替换其中一个字符并再次运行查询。想象一下,当我收到错误消息时,我感到惊讶:

  

从字符串转换为时转换失败   唯一标识符

我认为GUID或UniqueIdentifier的范围是无限的,即。任何字母数字字符都可以替换为任何其他字符,但似乎SQL Server对构成GUID的内容有自己的想法。任何使用字母'X'都会产生此错误。其他角色似乎并没有扰乱RDBMS。

任何人都能解释一下吗?

1 个答案:

答案 0 :(得分:3)

GUID是一个十六进制数 - 它不仅仅是“任何字符都可以用来替换任何其他字符”,结果字符串必须是有效的十六进制数。这不是GUID本身必然是唯一的,它是GUID可以表示的数字范围(2 ^ 128),在系统内生成两次相同GUID的几率可以忽略不计。