2011-09-22 67 views
0

假設我有一點SQL過濾了UniqueIdentifier類型列的數據。SQL Server中是否存在UniqueIdentifiers驗證規則?

Select * from core.Pages WHERE PageId = '1DC4E71C-4E68-489D-A837-2C9BA8DCC1DC'

對於快速測試/理智的目的(通過NEWID()函數生成該GUID)檢查我想我替換字符之一與「x」和運行再次查詢。想象一下當我收到錯誤消息時,我的驚喜:

將字符串轉換爲 uniqueidentifier時轉換失敗。

我認爲GUID或UniqueIdentifier在它的範圍內是無限的。任何字母數字字符都可以被其他字符替換,但似乎SQL Server對於什麼是GUID有自己的想法。任何使用字母'X'都會產生這個錯誤。其他角色似乎並沒有打亂RDBMS。

任何人都可以解釋這一點嗎?

+2

相信一個GUID是任何十六進制字符0,1,2,3,4,5,6,7,8,9,A,B,C,d,E,和F –

+0

順便提及不使用NEWID( )使用newsequentialId(),http://www.codeproject.com/KB/database/AgileWareNewGuid.aspx – HLGEM

回答

3

GUID是一個十六進制數 - 它不只是「任何字符可以用來替代任何其他字符」,得到的字符串必須是有效的十六進制數。不是GUID本身必須是唯一的,而是GUID可以表示的數字範圍(2^128),即系統內兩次生成的相同GUID的可能性可以忽略不計。

+0

Aaah。我懂了。謝謝。 – 5arx