永别了,Text与NText

      曾几何时刚进入这个行业的时候,那时候就是用ASP做网站,对于新闻内容,我们用得最多的就是Text与NText,从SQL97到SQL2000,那时候我一直用它。渐渐的,不再做网站了,一直都是做的信息系统,Text和Ntext用得比较少了。

      随便SQL2005的出现,Nvarchar(max)走进了程序生活。记得刚出来的时候,微软很提倡使用它字段类型,那时候,觉得也无所谓。感觉上一样使用。

      但是今天发生了一件很奇怪的事,我不知道是因为微软的BUG还是它的特性。

      目前设计的一个系统,需要一个字段存放大量的Guid形式的字符串,如“10a9bc89-398b-47c3-b028-44ead644acb4”。

      我们知道Ntext字段类型,在检查的时候比较麻烦,必须这样写CAST(Taker AS NVARCHAR) = '10a9bc89-398b-47c3-b028-44ead644acb4'

      否则会报“数据类型text 和varchar 在equal to 运算符中不兼容”。

      例如SQL文

      

select * from sprs_T_MESSAGENOTICE where MessageType='1' AND Taker = '10a9bc89-398b-47c3-b028-44ead644acb4'

这条记录其实是存在的,可是如果Taker是Ntext,它就查不到数据,如果我10a9bc89-398b-47c3-b028-44ead644acb4换成其它字符串,如“1”,它就查出来了

存放Guid形式的数据,它就是不行!

也不知道为什么会这样,不知道是不是微软的BUG,还是它的内部特性。咱也不深究了,没办法只能改用Nvarchar(max)了。

posted @ 2009-06-19 21:23  riancy  阅读(589)  评论(0编辑  收藏  举报