使用 char 與 varchar 資料
char 與 varchar 資料類型可儲存由下列項目組成的資料:
- 大、小寫字元,如 a、b、C。
- 數字,如 1、2、3。
- 特殊字元,如 @ 符號、& 符號和驚嘆號 (!)。
char 或 varchar 資料可以是單一字元,也可以是不超過 8,000 個字元的 char 資料字串,或是高達 2^31 個字元的 varchar 資料。varchar 資料類型可採用兩種格式。varchar 資料可以是指定最大的字元數,例如,varchar(6) 即表示此資料類型最多可儲存六個字元,或者,也可以採用 varchar(max), 格式,這種格式可將此資料類型所能儲存的最大字元數增加到 2^31。如需 varchar(max), 的詳細資訊,請參閱<使用大數值資料類型>。
每個 char 與 varchar 資料值都有定序。定序所定義的屬性包括用來代表每個字元的位元模式、比較規則、是否區分大小寫或區分腔調音。每個資料庫都有預設的定序。定義資料行或指定常數時,除非使用 COLLATE 子句指派專屬的定序,否則會為它們指定資料庫的預設定序。合併或比較擁有兩個不同定序的 char 或 varchar 值時,會由定序優先順序規則來決定運算所使用的定序。
字元常數必須括在單引號 (') 或雙引號 (") 中。建議您使用單引號來括住字元常數。當 QUOTED IDENTIFIER 選項設成 ON 時,就不允許將字元常數括在雙引號中。
以下的 Transact-SQL 範例會將字元變數設定為值:
DECLARE @MyCharVar CHAR(25)
SET @MyCharVar = 'Ricardo Adocicados'
使用單引號分隔包含內嵌單引號的字元常數時,應使用兩個單引號來代表內嵌的單引號。例如:
SET @MyCharVar = 'O''Leary'
若要儲存的資料長度超出允許的字元數,就會截斷資料。例如,如果將資料行定義為 char(10),並將 "This is a really long character string" 這個值儲存到資料行中,則 SQL Server 會將此字元字串截斷為 "This is a"。
若指定了 NOT NULL 子句,char 資料類型就會是固定長度的資料類型。如果將短於資料行長度的值插入 char NOT NULL 資料行中,則值的右邊會填上空白,以補滿該資料行的大小。例如,如果將資料行定義為 char(10),並儲存 "music" 資料,SQL Server 會將此資料儲存為 "music_____",其中 "_" 表示空白。
建立 char NULL 資料行時如果 ANSI_PADDING 是 ON,其作用就相當於 char NOT NULL 資料行:在值的右邊填上空白,以補滿該資料行的大小。建立 char NULL 資料行時,如果 ANSI_PADDING 是 OFF,其作用就相當於 ANSI_PADDING 設為 OFF 的 varchar 資料行:截斷尾端的空白。
varchar 資料類型是可變長度的資料類型。數值如果短於資料行的大小,也不會在右邊填上空白。建立資料行時,如果 ANSI_PADDING 選項的設定為 OFF,就會截斷儲存在資料行中任何字元數值後面的空白。建立資料行時,如果 ANSI_PADDING 設為 ON,就不截斷後隨的空白。
安裝過程中所指定的 Microsoft SQL Server 2005 字碼頁,會決定如何解譯儲存於字元字串位元組中的位元模式。char 或 varchar 物件可包含 SQL Server 字碼頁中的任何字元。 .
使用 SQL Server 6.5 版或舊版之 SQL Server ODBC 驅動程式的應用程式,僅支援最多 255 個位元組的字元資料。如果這些應用程式試圖擷取 SQL Server 7.0 或更新版本的字元參數,或是含有 255 個位元組以上之資料的結果集資料行,字元資料就會被截斷為 255 個位元組。
請參閱
其他資源
資料類型 (Transact-SQL)
char 和 varchar (Transact-SQL)
定序優先順序 (Transact-SQL)
SET ANSI_PADDING (Transact-SQL)
sp_dbcmptlevel (Transact-SQL)