sqlserver 中guid 类型表字段查询导致的问题

现象:
1 sqlserver 有表a, 有id 和parentid两个字段。 id为uniqueidentifier 类型,即guid类型。默认值为newsequentialid() 。 parentid为字符串类型。

2 a表数据为 id值为6c75c497-76e8-eb11-9d5d-6045cba80309 。parentid值6c75c497-76e8-eb11-9d5d-6045cba803097 (parentid的值比id的值多了一个7)

3 注意guid的值 执行语句 select * from a where id='6c75c497-76e8-eb11-9d5d-6045cba80309ppppppppppppp7' 可以查询出记录
执行 select * from a where parentid='6c75c497-76e8-eb11-9d5d-6045cba803097' 可以查询出记录
执行 select * from a where parentid='6c75c497-76e8-eb11-9d5d-6045cba80309' 可以查询出记录

4 可以看出来sqlserver执行查询的时候,对于guid类型的字段,会自动截取固定长度,然后再查询。比如你的guid的字符串输错了,变成37位,只要你前32位正确,依然可以查出结果。
字符串类型的字段,就不会如此,会按完全匹配来查询。

查看 数据使用的端口号
exec sys.sp_readerrorlog 0, 1, 'listening'


作者:过错
出处:http://www.cnblogs.com/wang2650/
关于作者:net开发做的久而已。十余年时光虚度!
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。如有问题,可以邮件:wang2650@163.com  联系我,非常感谢。

原文地址:https://www.cnblogs.com/wang2650/p/15038864.html