閱讀282 返回首頁    go iPhone_iPad_Mac_手機_平板_蘋果apple


字符串類型__數據類型_SQL語法參考_雲數據庫 OceanBase-阿裏雲

字符類型字節說明
CHAR0-255CHAR列的長度固定為創建表時聲明的長度。
長度可以為從0到255的任何值。
VARCHAR0-262143VARCHAR的最大實際長度由最長的行的大小和使用的字符集確定。
最大有效長度是256K,區別於MySQL的64K。
BINARY0-255類似於CHAR類型,但保存二進製字節字符串而不是非二進製字符串。
VARBINARY0-262143類似於VARCHAR類型,但保存二進製字節字符串而不是非二進製字符串。
  • CHAR

    CHAR[(M)] [CHARACTER SET charsetname] [COLLATE collationname]

    CHAR列的長度固定為創建表時聲明的長度。長度可以為從 0 到 255 的任何值。 當保存 CHAR 值時,在它們的右邊填充空格以達到指定的長度。當檢索到 CHAR 值時, 尾部的空格被刪除掉。在存儲或檢索過程中不進行大小寫轉換。

    若沒有指定長度,則是CHAR(1)的同義詞。

    OceanBase 1.0中Char和Varchar數據類型在內部都是變長存儲。

    CHAR是CHARACTER的簡寫。

  • VARCHAR

    VARCHAR(M) [CHARACTER SET charsetname] [COLLATE collationname]

    變長字符串。M表示最大列長度。VARCHAR的最大實際長度由最長的行的大小和使用的字符集確定。最大有效長度是256K(262,144字節)。假設係統使用UTF8MB4字符集,每個字符占用4字節,M最大值為:(1024*256)/4 = 65536 (字符)。則M的範圍是0到65536

    如果分配給CHAR或VARCHAR列的值超過列的最大長度,則對值進行裁剪以使其適合。如果被裁掉的字符是空格,則可以成功插入。如果裁剪非空格字符,則會造成錯誤(而不是警告)並通過使用嚴格SQL模式禁用值的插入。

    VARCHAR是字符CHAR VARYING的簡寫。

    varchar類型最大長度限製

    • 建表的時候,檢查varchar類型主鍵長度之和小於等於16K,且總長度小於1.5M,否則報錯;

    • 建立索引的時候,索引表中varchar類型主鍵之和小於等於16K,且總長度小於1.5M,否則不允許建立索引;

    • 單個varchar列長度小於256K。

      CHAR和VARCHAR的區別:

      同CHAR對比,VARCHAR值保存時隻保存需要的字符數,另加一到三個字節來記錄長度。

      下麵的表顯示了將各種字符串值保存到CHAR(4)和VARCHAR(4)列後的結果,說明 了CHAR和VARCHAR之間的差別:

CHAR(4) 存儲需求 VARCHAR(4) 存儲需求
'' ' ' 4 個字節 '' 1 個字節
'ab' 'ab ' 4 個字節 'ab ' 3 個字節
'abcd' 'abcd' 4 個字節 'abcd' 5 個字節
'abcdefgh' 'abcd' 4 個字節 'abcd' 5 個字節

上表最後一行僅限於沒有使用嚴格SQL模式的情況下,若使用了嚴格SQL模式,會直接報錯,並非存儲截斷的字符串。

  • BINARY, VARBINARY

    BINARY和VARBINARY類似CHAR和VARCHAR,不同的是它們包含二進製字符串而不要非二進製字符串。也就是說,它們包含字節字符串而不是字符字符串。這說明它們沒有字符集,並且排序和比較基於列值字節的數值值。

    BINARY和VARBINARY允許的最大長度一樣,如同CHAR和VARCHAR,不同的是BINARY和VARBINARY的長度是字節長度而不是字符長度。

最後更新:2016-11-23 16:03:54

  上一篇:go 數值類型__數據類型_SQL語法參考_雲數據庫 OceanBase-阿裏雲
  下一篇:go 時間日期類型__數據類型_SQL語法參考_雲數據庫 OceanBase-阿裏雲