真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql有沒有varchar2

今天小編給大家分享一下MySQL有沒有varchar2的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

我們提供的服務(wù)有:網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、銀州ssl等。為成百上千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的銀州網(wǎng)站制作公司

mysql沒有varchar2,只有varchar。VARCHAR代表可變長(zhǎng)度的字符串,其長(zhǎng)度可以達(dá)到65,535個(gè)字符; MySQL將VARCHAR值作為1字節(jié)或2字節(jié)長(zhǎng)度前綴加上實(shí)際數(shù)據(jù)。 VARCHAR2是oracle的類型,代表可變長(zhǎng)度的字符串,可以存儲(chǔ)1到4000字節(jié)的值,這意味著對(duì)于單字節(jié)字符集,最多可以在VARCHAR2列中存儲(chǔ)4000個(gè)字符。

mysql沒有varchar2,只有varchar,oracle有varchar2,代表字節(jié)長(zhǎng)度,能容納多少個(gè)漢字和數(shù)據(jù)庫的字符集有關(guān)。

mysql的varchar類型

VARCHAR是可變長(zhǎng)度的字符串,其長(zhǎng)度可以達(dá)到65,535個(gè)字符。 MySQL將VARCHAR值作為1字節(jié)或2字節(jié)長(zhǎng)度前綴加上實(shí)際數(shù)據(jù)。

長(zhǎng)度前綴指定值的字節(jié)數(shù)。 如果列需要少于255個(gè)字節(jié),則長(zhǎng)度前綴為1個(gè)字節(jié)。 如果列需要超過255個(gè)字節(jié),長(zhǎng)度前綴是兩個(gè)長(zhǎng)度字節(jié)。

但是,最大長(zhǎng)度受到最大行大小(65,535字節(jié))和所使用的字符集的限制。 這意味著所有列的總長(zhǎng)度應(yīng)該小于65,535字節(jié)。

下面我們來看一個(gè)例子。

創(chuàng)建一個(gè)新的表,它有兩列s1和s2,長(zhǎng)度分別為32765(長(zhǎng)度前綴為+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;

該語句成功創(chuàng)建了表。 但是,如果我們將s1列的長(zhǎng)度增加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將發(fā)出錯(cuò)誤消息:

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

如上所示,行長(zhǎng)度太大,所以創(chuàng)建語句失敗。

如果插入長(zhǎng)度大于VARCHAR列長(zhǎng)度的字符串,MySQL將發(fā)出錯(cuò)誤。 請(qǐng)考慮以下示例:

USE testdb;

CREATE TABLE items (
    id INT PRIMARY KEY AUTO_INCREMENT,
    title VARCHAR(3)
);

INSERT INTO items(title)
VALUES('ABCD');

在這個(gè)例子中,MySQL發(fā)出以下錯(cuò)誤消息:

1406 - Data too long for column 'title' at row 1

oracle的varchar2類型

要存儲(chǔ)可變長(zhǎng)度的字符串,可以使用Oracle VARCHAR2數(shù)據(jù)類型。 VARCHAR2列可以存儲(chǔ)1到4000字節(jié)的值。 這意味著對(duì)于單字節(jié)字符集,最多可以在VARCHAR2列中存儲(chǔ)4000個(gè)字符。

當(dāng)使用VARCHAR2列創(chuàng)建表時(shí),必須指定最大字符串長(zhǎng)度(以字節(jié)為單位):

VARCHAR2(max_size BYTE)

或以字符 -

VARCHAR2(max_size CHAR)

默認(rèn)情況下,如果沒有在max_size之后顯式指定BYTE或CHAR,則Oracle使用BYTE。 換句話說,VARCHAR2(N)列最多可以容納N個(gè)字節(jié)的字符。

如果存儲(chǔ)大小超過VARCHAR2列最大長(zhǎng)度的字符串,則Oracle發(fā)出錯(cuò)誤。

例如,如果定義最大長(zhǎng)度為20的VARCHAR2列,則在單字節(jié)字符集中最多可以存儲(chǔ)20個(gè)字符。 如果存儲(chǔ)了21個(gè)或更多字符,則Oracle返回錯(cuò)誤。

另外,如果在VARCHAR2(20)列中存儲(chǔ)10個(gè)字符,則Oracle僅使用10個(gè)字節(jié)進(jìn)行存儲(chǔ),而不是20個(gè)字節(jié)。 因此,使用VARCHAR2數(shù)據(jù)類型可以幫助您節(jié)省表使用的空間。

比較VARCHAR2值時(shí),Oracle使用非填充比較語義。

VARCHAR2最大長(zhǎng)度

從Oracle 12c開始,可以為VARCHAR2數(shù)據(jù)類型最大長(zhǎng)度為:32767。 Oracle使用MAX_STRING_SIZE參數(shù)來控制最大長(zhǎng)度。 如果MAX_STRING_SIZE是STANDARD,則VARCHAR2的最大大小是4000字節(jié)。 如果MAX_STRING_SIZE為EXTENDED,則VARCHAR2的大小限制為32767。

要獲取MAX_STRING_SIZE參數(shù)的值,請(qǐng)使用以下查詢:

SELECT
    name,
    value
FROM
    v$parameter
WHERE
    name = 'max_string_size';

執(zhí)行上面查詢語句,得到以下結(jié)果 -

SHOW PARAMETER max_string_size;

以上就是“mysql有沒有varchar2”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)站名稱:mysql有沒有varchar2
分享網(wǎng)址:http://weahome.cn/article/ipccie.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部