本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
字元類型
字元資料類型包括 CHAR(字元) 和 VARCHAR(字元變化)。
儲存與範圍
CHAR 和 VARCHAR 資料類型是以位元組為單位定義,而非字元。資料CHAR欄只能包含單位元組字元,因此 CHAR(10) 資料欄可以包含長度上限為 10 個位元組的字串。VARCHAR 可包含多位元組字元,每個字元最多四個位元組。例如,VARCHAR(12) 欄可以包含 12 個單位元組字元、6 個雙位元組字元、4 個三位元組字元或 3 個四位元組字元。
名稱 | 儲存 | 範圍 (資料欄的寬度) |
---|---|---|
CHAR、 CHARACTER或 NCHAR | 字串的長度,包括多餘的空格 (如果有的話) | 4096 位元組 |
VARCHAR、 CHARACTER VARYING或 NVARCHAR | 4 位元組 + 字元的總位元組數,其中每個字元都可以是 1 到 4 個位元組。 | 65535 位元組 (64K -1) |
BPCHAR | 已轉換為固定長度 CHAR(256)。 | 256 位元組 |
TEXT | 已轉換為 VARCHAR(256)。 | 260 位元組 |
注意
CREATE TABLE 語法支援字元資料類型的MAX關鍵字。例如:
create table test(col1 varchar(max));
MAX 設定會將欄的寬度定義為 4096 位元組,CHAR或 65535 位元組VARCHAR。
CHAR 或 CHARACTER
使用 CHAR或 CHARACTER欄來存放固定長度字串。這些字串會加上空白,因此 CHAR(10) 欄一律佔用 10 個位元組的儲存空間。
char(10)
沒有長度規格的資料CHAR欄會產生 CHAR(1) 資料欄。
VARCHAR 或 CHARACTER VARYING
使用 VARCHAR或 CHARACTERVARYING欄來存放具有固定限制的變數長度字串。這些字串不會加上空白,因此 VARCHAR(120) 欄最多包含 120 個單位元組字元、60 個雙位元組字元、40 個三位元組字元或 30 個四位元組字元。
varchar(120)
如果您在CREATETABLE陳述式中使用沒有長度規格符的VARCHAR資料類型,預設長度為 256。如果在運算式中使用,系統會使用輸入運算式來確定輸出的大小 (最多 65535)。
NCHAR 和 NVARCHAR 類型
您可以使用 NCHAR和 NVARCHAR類型 (也稱為 NATIONALCHARACTER和 NATIONALCHARACTERVARYING類型) 建立資料欄。這些類型分別轉換為 CHAR 和 VARCHAR類型,並儲存在指定的位元組數中。
沒有長度規格NCHAR的欄會轉換為 CHAR(1) 欄。
沒有長度規格的NVARCHAR欄會轉換為 VARCHAR(256) 欄。
TEXT 和 BPCHAR 類型
您可以使用資料TEXT欄建立 Amazon Redshift 資料表,但會轉換為接受變數長度值的 VARCHAR(256) 資料欄,最多 256 個字元。
您可以建立 Amazon Redshift 資料欄,其中使用 BPCHAR(空白填充字元) 類型,Amazon Redshift 會轉換為固定長度 CHAR(256) 資料欄。
多餘空格的意義
CHAR 和 VARCHAR 資料類型最多可以存放長度為 n 個位元組的字串。如果試圖將較長的字串,儲存到具有這些類型的資料欄中,將會造成錯誤 (除非多出來的字串全部都是空格 (空白),此時字串會被截斷至最大長度)。如果字串短於長度上限,則CHAR值會填入空白,但VARCHAR值會存放字串而不留空白。
CHAR 值中的追蹤空白一律不明顯。當您比較兩個值,不包含在LENGTH計算中,並在將CHAR值轉換為CHAR其他字串類型時將其移除時,它們會被忽略。
追蹤 VARCHAR和 CHAR值中的空格在比較值時被視為不明顯。
長度計算會傳回長度中包含尾端空格的VARCHAR字元字串長度。多餘的空格不會列入固定長度字元字串的長度計算。