永別了,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)了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章