sql server支援兩種字元資料型別——普通字元和unicode字元。普通字元資料型別包括char和varchar,unicode字元資料型別包括nchar和nvarchar。它們二者的區別是:普通字元使用乙個位元組(byte)來儲存每個字元,而unicode字元則需要兩個位元組。當使用普通字元型別時,由於乙個列只用乙個位元組來儲存每個字元,所以就限制在這個列中只能使用英語這一語言,因為乙個位元組只能代表256(2^8)個不同的字元。乙個列所支援的語言是由列的有效排序規則(collation)屬性決定的。當使用unicode資料型別時,乙個列可以代表65535(2^16)個不同的字元,因為這時用兩個位元組來儲存每個字元。所有語言都可以用相同的unicode碼來表示,這樣,當某個列使用了unicode資料型別時,就可以在這個列中混合多種語言,而不必只侷限於英語。
在字元常量的表示方式上,這兩種字元資料型別也有所不同。當表示乙個普通的字元常量時,值需要簡單地使用單引號:'this is a regular character string literal'。當表示乙個unicode型別的字元常量時,需要在前面指定乙個字元n(代表national)作為字首:n'this is a unicode character string literal'。
名稱中不包含var元素的任何資料型別都是固定長度的(char,nchar),對於這樣的型別,sql server會按照為列定義的大小,在行中為該列預留出固定的空間,所以該列的長度並不是字串中字元的實際個數。例如,如果將乙個列定義為char(25),sql server就會在行中為這個列預留出25個字元的空間,而不考慮其中儲存的字串的實際長度。因為當需要擴充套件字串時,在行中無法進行擴充套件,所以固定長度的資料型別更適合於以寫入為主的(write-focused)系統。但因為這種型別的儲存消耗不是最優的,所以在讀取資料時可能要付出更多的代價。
名稱中含有var元素的資料型別是可變長度的(varchar,nvarchar),sql server在行中會按字串的實際長度來儲存資料,外加兩個額外的位元組以儲存資料的偏移值(offset data)。例如,如果將乙個列定義為varchar(25),就意味著它應該最多支援25個字元,在實際使用中,儲存空間有字串中字元的實際數量來決定。與固定長度型別相比,可變長度型別消耗的儲存空間更少,所以讀取操作也會更快。不過,更新資料時可能需要對行進行擴充套件,導致資料移動,超出當前頁的範圍。因此,與固定長度的資料型別相比,對具有可變長度資料型別的資料進行更新的效率會有所降低。
在定義可變長度的資料型別時,可以使用max說明符,而不必指定字元的最大數量。當用max說明符來定義乙個列時,可以把乙個值直接儲存到行的內部,其長度具有一定的上限(預設是8000位元組)。大小超過該上限的值將作為大型物件(lob,large object),儲存在行的外部。
處理字元資料 資料型別
sql server支援兩種字元資料型別 普通字元和unicode字元。普通字元資料型別包括char和varchar,unicode字元資料型別包括nchar和nvarchar。它們二者的區別是 普通字元使用乙個位元組 byte 來儲存每個字元,而unicode字元則需要兩個位元組。當使用普通字元型...
資料型別與處理
整型 int 浮點型 float 複數 complex abs x 返回絕對值 pow x,y 求x的y次方 round x,n 四捨五入 n代表保留的小數點位數 min x1,x2,x3 求最小值 min x1,x2,x3 求最大值 print abs 10 print pow 2,5 print...
資料型別及處理
資料型別包括內建型別和自定義型別。內建型別包含基本型別和復合型別。自定義型別包含使用者自定義型別和標準庫中定義的型別。基本型別包含算術型別和空型別。算術型別包含整值型別和浮點型。整值型別包含字元型別,布林型別和整數型別。復合型別包含指標,引用,陣列,陣列,列舉,結構體,共用體。算術型別 c 算術型別...