SQL Server 資料類型

  • 2159
  • 0
  • 2012-09-24

摘要:SQL Server 資料類型

 

◎ 資料類型的預設值及有效範圍

 

資料型態 預設值   有效範圍
char  10  1-8000
varchar  50  1-8000
binary  50  1-8000
varbinary  50  1-8000
nchar  10  1-4000
nvarchar  50  1-4000

 

char、varchar、binary、varbinary等資料型態的上限值從SQL Server 6.x 255個bytes的限制增加為 8000個bytes。Transact-SQL字串函數也支援這些超長的char與varchar值。text與image資料型態的使用 can now be reserved for very large 資料 values。Substring函數可以用來處理text與image欄位。Nulls與空字串的處理也有改進。新的uniqueidentifier資料型態是提供給儲存globally unique identifier (GUID)使用的。

Text、 ntext、和image的值不是以資料橫列的方式來儲存,而是儲存在屬於它們自己個別所擁有的分頁裡。對於這些資料值來說,它們儲存在資料橫列裡的是一個16-byte指標。對於每一個橫列而言,這指標是指向資料所在的位置。一個含有多個text、ntext、或image欄位的橫列每一個欄位都有一個指標。

在SQL Server 7.0裡,分頁在邏輯上是組織成一個b-tree結構,但在舊版的SQL Server裡,它們是串接在一起形成分頁連結(page chain)。這SQL Server 7.0方法的優點在於以字串的中間開始執行的操作會更有效率。SQL Server 7.0 可以快速的瀏覽b-tree, 但舊版的SQL Server必須掃瞄整個分頁連結。

個別的text、ntext、及image分頁不會被限制只能儲存一個出現(occurrence)的資料。 一個可以儲存多個橫列的資料;甚至還可以將這類型態的資料混合在一起儲存到一個分頁中。

◎ SQL Server 中的資料類型

精確數值
bigint
numeric
bit
smallint
decimal
smallmoney
int
tinyint
money
 
近似數值
float
real

日期和時間
date
datetimeoffset
datetime2
smalldatetime
datetime
time

字元字串
char
varchar
text 
Unicode 字元字串
nchar
nvarchar
ntext
 
二進位字串
binary
varbinary
image
 
其他資料類型
cursor
timestamp
hierarchyid
uniqueidentifier
sql_variant
xml
table

◎ 資料類型優先順序 (Transact-SQL)

當一個運算子結合兩個不同資料類型的運算式時,資料類型優先順序的規則,會指定將低優先順序的資料類型,轉換為高優先順序的資料類型。如果轉換不是支援的隱含轉換,就會傳回錯誤。如果這兩個運算元運算式的資料類型相同,則作業結果就含有該資料類型。

SQL Server 會使用下列資料類型優先順序:

   1. 使用者自訂資料類型 (最高)
   2. sql_varian t
   3. xml
   4. datetimeoffset
   5. datetime2
   6. datetime
   7. smalldatetime
   8. date
   9. time
  10. float
  11. real
  12. decimal
  13. money
  14. smallmoney
  15. bigint
  16. int
  17. smallint
  18. tinyint
  19. bit
  20. ntext
  21. text
  22. image
  23. timestamp
  24. uniqueidentifier
  25. nvarchar (包括 nvarchar(max) )
  26. nchar
  27. varchar (包括 varchar(max) )
  28. char
  29. varbinary (包括 varbinary(max) )
  30. binary (最低)