我在 SQL Server 中使用标准的 ASP.NET Membership 表结构,并在 Management Studio 中进行了一些手动查询并运行了此查询
SELECT *
FROM [aspnet_Users]
WHERE UserId = '2ac5dd56-2630-406a-9fb8-d4445bc781da&cID=49'
注意最后的 &cID=49 - 我从查询字符串中复制了它,但忘记删除该部分。
然而,令我惊讶的是它正确返回了数据(有一个用户 ID 为 2ac5dd56-2630-406a-9fb8-d4445bc781da) - 知道为什么会这样吗?在我看来,它不应该匹配,或者更可能抛出错误,因为它不应该能够转换为 Guid?
最佳答案
uniqueidentifier
出于从字符表达式转换的目的,type 被视为字符类型,因此受转换为字符类型的截断规则的约束。即,当字符表达式转换为不同大小的字符数据类型时,对于新数据类型来说太长的值将被截断 .
因为唯一标识符类型 限制为 36 个字符 ,超过该长度的字符将被截断。
请注意,以上引用自 MSDN
关于asp.net - SQL 查询未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10410235/