首頁 > 資料庫 > mysql教程 > mysql有varchar2嗎

mysql有varchar2嗎

青灯夜游
發布: 2023-03-30 11:05:17
原創
3087 人瀏覽過

mysql沒有varchar2,只有varchar。 VARCHAR代表可變長度的字串,其長度可達到65,535個字元; MySQL將VARCHAR值作為1位元組或2位元組長度前綴加上實際資料。 VARCHAR2是oracle的類型,代表可變長度的字串,可以儲存1到4000位元組的值,這意味著對於單字節字元集,最多可以在VARCHAR2列中儲存4000個字元。

mysql有varchar2嗎

本教學操作環境:windows7系統、mysql8版本、Dell G3電腦。

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
FROM
    v$parameter
WHERE
    name = 'max_string_size';
登入後複製

執行上面查詢語句,得到以下結果-

SHOW PARAMETER max_string_size;
登入後複製

【相關推薦:mysql視頻教程

以上是mysql有varchar2嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板