数据库
首页 > 数据库> > sqlserver 中guid 类型表字段查询导致的问题

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位正确,依然可以查出结果。
字符串类型的字段,就不会如此,会按完全匹配来查询。

标签:76e8,eb11,sqlserver,表字,parentid,6c75c497,guid,id
来源: https://www.cnblogs.com/wang2650/p/15038864.html