曾幾何時剛進入這個行業的時候,那時候就是用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文
這條記錄其實是存在的,可是如果Taker是Ntext,它就查不到數據,如果我10a9bc89-398b-47c3-b028-44ead644acb4換成其它字符串,如“1”,它就查出來了
存放Guid形式的數據,它就是不行!
也不知道爲什麼會這樣,不知道是不是微軟的BUG,還是它的內部特性。咱也不深究了,沒辦法只能改用Nvarchar(max)了。