SqlServer教程

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

这篇关于sqlserver 中guid 类型表字段查询导致的问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!