共計 2420 個字符,預計需要花費 7 分鐘才能閱讀完成。
今天丸趣 TV 小編給大家分享一下 mysql 有沒有 varchar2 的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
mysql 沒有 varchar2,只有 varchar。VARCHAR 代表可變長度的字符串,其長度可以達到 65,535 個字符;MySQL 將 VARCHAR 值作為 1 字節或 2 字節長度前綴加上實際數據。VARCHAR2 是 oracle 的類型,代表可變長度的字符串,可以存儲 1 到 4000 字節的值,這意味著對于單字節字符集,最多可以在 VARCHAR2 列中存儲 4000 個字符。
mysql 沒有 varchar2,只有 varchar,oracle 有 varchar2,代表字節長度,能容納多少個漢字和數據庫的字符集有關。
mysql 的 varchar 類型
VARCHAR 是可變長度的字符串,其長度可以達到 65,535 個字符。MySQL 將 VARCHAR 值作為 1 字節或 2 字節長度前綴加上實際數據。
長度前綴指定值的字節數。如果列需要少于 255 個字節,則長度前綴為 1 個字節。如果列需要超過 255 個字節,長度前綴是兩個長度字節。
但是,最大長度受到最大行大小 (65,535 字節) 和所使用的字符集的限制。這意味著所有列的總長度應該小于 65,535 字節。
下面我們來看一個例子。
創建一個新的表,它有兩列 s1 和 s2,長度分別為 32765(長度前綴為 +2)和 32766(+2)。注意,32765 + 2 + 32766 + 2 = 65535,這是最大行大小。
USE testdb;
CREATE TABLE IF NOT EXISTS varchar_test ( s1 VARCHAR(32765) NOT NULL,
s2 VARCHAR(32766) NOT NULL
) CHARACTER SET latin1 COLLATE LATIN1_DANISH_CI;
該語句成功創建了表。但是,如果我們將 s1 列的長度增加 1。
USE testdb;
CREATE TABLE IF NOT EXISTS varchar_test_2 ( s1 VARCHAR(32766) NOT NULL, -- error
s2 VARCHAR(32766) NOT NULL
) CHARACTER SET latin1 COLLATE LATIN1_DANISH_CI;
MySQL 將發出錯誤消息:
Error Code: 1118. Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs 0.000 sec
如上所示,行長度太大,所以創建語句失敗。
如果插入長度大于 VARCHAR 列長度的字符串,MySQL 將發出錯誤。請考慮以下示例:
USE testdb;
CREATE TABLE items (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(3)
INSERT INTO items(title)
VALUES(ABCD
在這個例子中,MySQL 發出以下錯誤消息:
1406 - Data too long for column title at row 1
oracle 的 varchar2 類型
要存儲可變長度的字符串,可以使用 Oracle VARCHAR2 數據類型。VARCHAR2 列可以存儲 1 到 4000 字節的值。這意味著對于單字節字符集,最多可以在 VARCHAR2 列中存儲 4000 個字符。
當使用 VARCHAR2 列創建表時,必須指定最大字符串長度(以字節為單位):
VARCHAR2(max_size BYTE)
或以字符 –
VARCHAR2(max_size CHAR)
默認情況下,如果沒有在 max_size 之后顯式指定 BYTE 或 CHAR,則 Oracle 使用 BYTE。換句話說,VARCHAR2(N)列最多可以容納 N 個字節的字符。
如果存儲大小超過 VARCHAR2 列最大長度的字符串,則 Oracle 發出錯誤。
例如,如果定義最大長度為 20 的 VARCHAR2 列,則在單字節字符集中最多可以存儲 20 個字符。如果存儲了 21 個或更多字符,則 Oracle 返回錯誤。
另外,如果在 VARCHAR2(20)列中存儲 10 個字符,則 Oracle 僅使用 10 個字節進行存儲,而不是 20 個字節。因此,使用 VARCHAR2 數據類型可以幫助您節省表使用的空間。
比較 VARCHAR2 值時,Oracle 使用非填充比較語義。
VARCHAR2 最大長度
從 Oracle 12c 開始,可以為 VARCHAR2 數據類型最大長度為:32767。Oracle 使用 MAX_STRING_SIZE 參數來控制最大長度。如果 MAX_STRING_SIZE 是 STANDARD,則 VARCHAR2 的最大大小是 4000 字節。如果 MAX_STRING_SIZE 為 EXTENDED,則 VARCHAR2 的大小限制為 32767。
要獲取 MAX_STRING_SIZE 參數的值,請使用以下查詢:
SELECT
name,
value
v$parameter
WHERE
name = max_string_size
執行上面查詢語句,得到以下結果 –
SHOW PARAMETER max_string_size;
以上就是“mysql 有沒有 varchar2”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,丸趣 TV 小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注丸趣 TV 行業資訊頻道。