如何在Guid/UNIQUEIDENTIFIER(SQL Server)中解释#

Joh*_*ogo 4 c# sql t-sql sql-server

这是一种我只是错误地了解的行为.SQL Server中的表有一个UNIQUEIDENTIFIER列,我运行了一个查询:

SELECT * FROM Tbl WHERE GuidColumn = N'2B375CD8-D210-463F-A2FD-EAFB0D643664#1'
Run Code Online (Sandbox Code Playgroud)

Guid末尾的#1错误地到达了那里,因为我从附加#1,#2,#3等的URL复制粘贴它,表示分页.

让我感到惊讶的是,查询运行得很好,我得到了与运行时相同的结果:

SELECT * FROM Tbl WHERE GuidColumn = N'2B375CD8-D210-463F-A2FD-EAFB0D643664'
Run Code Online (Sandbox Code Playgroud)

有谁知道在这种情况下如何解释#和之后的任何内容?

And*_*tan 5

这在MSDN上明确处理:http://msdn.microsoft.com/en-us/library/ms187942.aspx

这并不意味着任何东西-转换成的Guid当SQL Server只读取该字符串的第36个字符.

澄清

在John Gathogo关于'{GUID}[gibberish]'案件的评论之后(并且在接受之后),我认为我可以稍微扩展规则.

1)如果该字符串以该字符串开头'{',那么第38个 必须'}'(尝试在其中的前导和尾随空格 - 它将不起作用),否则转换失败.然后转换36个字符.

2)否则,使用前36个字符.

所以你可以添加:),<<并且antidisestablishmentarianism- 在1)中的第38个字符或2中的第36个字符之后,它没有任何区别.