Mut*_*san 5 sql sql-server guid uniqueidentifier
我有一个名为表Student,包含一列StudentId的GUID,所以我使用的Uniqueidentifier数据类型为.
如果我想获得特定记录,我会通过以下查询得到结果:
SELECT * FROM Student WHERE StudentId = '919C3BF9-B081-458C-897D-C0B3FF56AF73'
Run Code Online (Sandbox Code Playgroud)
它返回预期的结果.但是如果我错误地在最后添加任何额外的字符,它会返回相同的结果.如下面的查询:
SELECT * FROM Student WHERE StudentId = '919C3BF9-B081-458C-897D-C0B3FF56AF73xyz'
Run Code Online (Sandbox Code Playgroud)
如果我在最后传递额外的字符GUID,为什么不认为它是无效的GUID?并返回相同的结果?
GUID是 16 字节,所以从给定的919C3BF9-B081-458C-897D-C0B3FF56AF73
91是第 1 个字节
9C是第
3B2 个字节 是第 3 个字节
F9是第 4 个字节
..
..
..
..
56是第 14 个字节
AF是第 15 个字节
73是第 16 个字节
的解析919C3BF9-B081-458C-897D-C0B3FF56AF73xyz在 之前完成xyz。
所以第16个字节之后输入的字符将不予考虑。
但如果您在前面添加任何额外的字符,它将不会被视为有效GUID。
此外,当您使用 查询时GUID,请使用 之间的代码{}。
SELECT * FROM Student
WHERE StudentId = '{919C3BF9-B081-458C-897D-C0B3FF56AF73}'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
537 次 |
| 最近记录: |