字元類型 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

字元類型

字元資料類型包括 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字元字串長度。多餘的空格不會列入固定長度字元字串的長度計算。