char 和 varchar 的區(qū)別
char 和 varchar 的區(qū)別
固定長(zhǎng)度 (char) 或可變長(zhǎng)度 (varchar) 字符數(shù)據(jù)類型。
char[(n)]
長(zhǎng)度為 n 個(gè)字節(jié)的固定長(zhǎng)度且非 Unicode 的字符數(shù)據(jù)。n 必須是一個(gè)介于 1 和 8,000 之間的數(shù)值。存儲(chǔ)大小為 n 個(gè)字節(jié)。char 在 SQL-92 中的同義詞為 character。
varchar[(n)]
長(zhǎng)度為 n 個(gè)字節(jié)的可變長(zhǎng)度且非 Unicode 的字符數(shù)據(jù)。n 必須是一個(gè)介于 1 和 8,000 之間的數(shù)值。存儲(chǔ)大小為輸入數(shù)據(jù)的字節(jié)的實(shí)際長(zhǎng)度,而不是 n 個(gè)字節(jié)。所輸入的數(shù)據(jù)字符長(zhǎng)度可以為零。varchar 在 SQL-92 中的同義詞為 char varying 或 character varying。
注釋
如果沒有在數(shù)據(jù)定義或變量聲明語句中指定 n,則默認(rèn)長(zhǎng)度為 1。如果沒有使用 CAST 函數(shù)指定 n,則默認(rèn)長(zhǎng)度為 30。
將為使用 char 或 varchar 的對(duì)象被指派數(shù)據(jù)庫的默認(rèn)排序規(guī)則,除非用 COLLATE 子句另外指派了特定的排序規(guī)則。該排序規(guī)則控制用于存儲(chǔ)字符數(shù)據(jù)的代碼頁。
支持多語言的站點(diǎn)應(yīng)考慮使用 Unicode nchar 或 nvarchar 數(shù)據(jù)類型以盡量減少字符轉(zhuǎn)換問題。如果使用 char 或 varchar:
如果希望列中的數(shù)據(jù)值大小接近一致,請(qǐng)使用 char。
如果希望列中的數(shù)據(jù)值大小顯著不同,請(qǐng)使用 varchar。
如果執(zhí)行 CREATE TABLE 或 ALTER TABLE 時(shí) SET ANSI_PADDING 為 OFF,則一個(gè)定義為 NULL 的 char 列將被作為 varchar 處理。
當(dāng)排序規(guī)則代碼頁使用雙字節(jié)字符時(shí),存儲(chǔ)大小仍然為 n 個(gè)字節(jié)。根據(jù)字符串的不同,n 個(gè)字節(jié)的存儲(chǔ)大小可能小于 n 個(gè)字符。
文章出處:DIY部落(http://www.diybl.com/course/7_databases/mysql/Mysqljs/2008531/118400.html)
posted on 2009-11-04 22:13 ammay 閱讀(95) 評(píng)論(0) 編輯 收藏