<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    kxbin
    成功留給有準(zhǔn)備的人
    posts - 10,  comments - 35,  trackbacks - 0
    一 varchar,nvarchar, 
    四個類型都屬于變長字符類型, varchar和varchar2的區(qū)別在與后者把所有字符都占兩字節(jié),前者只對漢字和全角等字符占兩字節(jié)。 nvarchar和nvarchar2的區(qū)別和上面一樣,   與上面區(qū)別在于是根據(jù)Unicode   標(biāo)準(zhǔn)所進行的定義的類型,通常用于支持多國語言類似系統(tǒng)的定義。 

    1.char 

    char的長度是固定的,比如說,你定義了char(20),即使你你插入abc,不足二十個字節(jié),數(shù)據(jù)庫也會在abc后面自動加上17個空格,以補足二十個字節(jié); 

    char是區(qū)分中英文的,中文在char中占兩個字節(jié),而英文占一個,所以char(20)你只能存20個字母或10個漢字。 

    char適用于長度比較固定的,一般不含中文的情況 

    2.varchar/varchar2 

    varchar是長度不固定的,比如說,你定義了varchar(20),當(dāng)你插入abc,則在數(shù)據(jù)庫中只占3個字節(jié)。 

    varchar同樣區(qū)分中英文,這點同char。 

    varchar2基本上等同于varchar,它是oracle自己定義的一個非工業(yè)標(biāo)準(zhǔn)varchar,不同在于,varchar2用null代替varchar的空字符串 

    varchar/varchar2適用于長度不固定的,一般不含中文的情況 

    3.nvarchar/nvarchar2 

    nvarchar和nvarchar2是長度不固定的 

    nvarchar不區(qū)分中英文,比如說:你定義了nvarchar(20),你可以存入20個英文字母/漢字或中英文組合,這個20定義的是字符數(shù)而不是字節(jié)數(shù) 

    nvarchar2基本上等同于nvarchar,不同在于nvarchar2中存的英文字母也占兩個字節(jié) 

    nvarchar/nvarchar2適用于存放中文 

    char [ ( n ) ] 

        固定長度,非 Unicode 字符數(shù)據(jù),長度為 n 個字節(jié)。n 的取值范圍為 1 至 8,000,存儲大小是 n 個字節(jié)。 

    varchar [ ( n | max ) ] 

        可變長度,非 Unicode 字符數(shù)據(jù)。n 的取值范圍為 1 至 8,000。max 指示最大存儲大小是 2^31-1 個字節(jié)。存儲大小是輸入數(shù)據(jù)的實際長度加 2 個字節(jié),用于反映存儲的數(shù)據(jù)的長度。所輸入數(shù)據(jù)的長度可以為 0 個字符。 

        * 如果列數(shù)據(jù)項的大小一致,則使用 char。 
        * 如果列數(shù)據(jù)項的大小差異相當(dāng)大,則使用 varchar。 
        * 如果列數(shù)據(jù)項大小相差很大,而且大小可能超過 8,000 字節(jié),請使用 varchar(max)。 

    如果未在數(shù)據(jù)定義或變量聲明語句中char 或 varchar 數(shù)據(jù)類型指定 n,則默認(rèn)長度為 1。如果在使用 CAST 和 CONVERT 函數(shù)時char 或 varchar 數(shù)據(jù)類型未指定 n,則默認(rèn)長度為 30。 
    當(dāng)執(zhí)行 CREATE TABLE 或 ALTER TABLE 時,如果 SET ANSI_PADDING 為 OFF,則定義為 NULL 的 char 列將作為 varchar 處理。 
    1.NULL值(空值)。 

         a. char列的NULL值占用存儲空間。 

         b. varcahr列的NULL值不占用存儲空間。 

         c. 插入同樣數(shù)量的NULL值,varchar列的插入效率明顯高出char列。 
    2.插入數(shù)據(jù) 

        無論插入數(shù)據(jù)涉及的列是否建立索引,char的效率都明顯低于varchar。 

    3. 更新數(shù)據(jù) 

         如果更新的列上未建立索引,則char的效率低于varchar,差異不大;建立索引的話,效率較高。 

    4. 修改結(jié)構(gòu) 

         a. 無論增加或是刪除的列的類型是char還是varchar,操作都能較快的完成,而且效率上沒有什么差異。 

         b. 對于增加列的寬度而言,char與varchar有非常明顯的效率差異,修改varcahr列基本上不花費時間,而修改char列需要花費很長的時間。 

    5.數(shù)據(jù)檢索 

         無論是否通過索引,varchar類型的數(shù)據(jù)檢索略優(yōu)于char的掃描。 

    選擇char還是選擇varchar的建議 

        1.適宜于char的情況: 

         a. 列中的各行數(shù)據(jù)長度基本一致,長度變化不超過50字節(jié); 

         b. 數(shù)據(jù)變更頻繁,數(shù)據(jù)檢索的需求較少。 

         c. 列的長度不會變化,修改char類型列的寬度的代價比較大。 

         d. 列中不會出現(xiàn)大量的NULL值。 

         e. 列上不需要建立過多的索引,過多的索引對char列的數(shù)據(jù)變更影響較大。 

        2.適宜于varchar的情況; 

         a. 列中的各行數(shù)據(jù)的長度差異比較大。 

         b. 列中數(shù)據(jù)的更新非常少,但查詢非常頻繁。 
         c. 列中經(jīng)常沒有數(shù)據(jù),為NULL值或為空值 

    nchar [ ( n ) ] 

        n 個字符的固定長度的 Unicode 字符數(shù)據(jù)。n 值必須在 1 到 4,000 之間(含)。存儲大小為兩倍 n 字節(jié)。 

    nvarchar [ ( n | max ) ] 

        可變長度 Unicode 字符數(shù)據(jù)。n 值在 1 到 4,000 之間(含)。max 指示最大存儲大小為 2^31-1 字節(jié)。存儲大小是所輸入字符個數(shù)的兩倍 + 2 個字節(jié)。所輸入數(shù)據(jù)的長度可以為 0 個字符。 

    注釋 

    如果沒有在數(shù)據(jù)定義或變量聲明語句中指定 n,則默認(rèn)長度為 1。如果沒有使用 CAST 函數(shù)指定 n,則默認(rèn)長度為 30。 

    如果列數(shù)據(jù)項的大小可能相同,請使用 nchar。 

    如果列數(shù)據(jù)項的大小可能差異很大,請使用 nvarchar。 

    sysname 是系統(tǒng)提供的用戶定義數(shù)據(jù)類型,除了不可為空值外,在功能上與 nvarchar(128) 相同。sysname 用于引用數(shù)據(jù)庫對象名。 

    為使用 nchar 或 nvarchar 的對象分配的是默認(rèn)的數(shù)據(jù)庫排序規(guī)則,但可使用 COLLATE 子句分配特定的排序規(guī)則。 

    SET ANSI_PADDING ON 永遠適用于 nchar 和 nvarchar。SET ANSI_PADDING OFF 不適用于 nchar 或 nvarchar 數(shù)據(jù)類型。 

    在Oracle中CHAR,NCHAR,VARCHAR,VARCHAR2,NVARCHAR2這五種類型的區(qū)別 

    1.CHAR(size)和VARCHAR(size)的區(qū)別 
        CHAR為定長的字段,最大長度為2K字節(jié); 
        VARCHAR為可變長的字段,最大長度為4K字節(jié); 

    2.CHAR(size)和NCHAR(size)的區(qū)別 
        CHAR如果存放字母數(shù)字占1個字節(jié),存放GBK編碼的漢字存放2個字節(jié),存放UTF-8編碼的漢字占用3個字節(jié); 
        NCHAR根據(jù)所選字符集來定義存放字符的占用字節(jié)數(shù),一般都為2個字節(jié)存放一個字符(不管字符或者漢字) 

    3.VARCHAR(size)和VARCHAR2(size)的區(qū)別 
        在現(xiàn)在的版本中,兩者是沒有區(qū)別的;最大長度為4K字節(jié);推薦使用VARCHAR2; 

    4.VARCHAR2(size)和NVARCHAR2(size)的區(qū)別 
        最大長度為4K字節(jié),區(qū)別同CHAR與NCHAR的區(qū)別;(如果數(shù)據(jù)庫字符集長度是2,則NVARCHAR2最大為2K) 

    5.共同特性 
        當(dāng)執(zhí)行insert的時候,插入的值為'',則轉(zhuǎn)變成null,即insert ... values('') <=> insert ... values(null) 
        搜索的條件須用where xx is null 

    6.例子 
        比如有一個性別字段,里面存放“男,女”的其中一個值,兩種常用選擇 
            CHAR(2)    和 NCHAR(1) 
    posted on 2012-08-08 17:24 kxbin 閱讀(387) 評論(0)  編輯  收藏 所屬分類: ORACLE轉(zhuǎn)發(fā)
    你恨一個人是因為你愛他;你喜歡一個人,是因為他身上有你沒有的;你討厭一個人是因為他身上有你有的東西;你經(jīng)常在別人面前批評某人,其實潛意識中是想接近他。

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(5)

    隨筆檔案

    文章分類

    文章檔案

    相冊

    收藏夾

    J2EE

    java技術(shù)網(wǎng)站

    Linux

    平時常去的網(wǎng)站

    數(shù)據(jù)庫

    電影網(wǎng)站

    網(wǎng)站設(shè)計

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲AV一二三区成人影片| 91精品免费观看| 亚洲免费福利在线视频| 不卡精品国产_亚洲人成在线| 久久精品无码一区二区三区免费| 中文字幕在线免费播放| 老司机午夜性生免费福利| 亚洲性一级理论片在线观看| 亚洲码国产精品高潮在线| 亚洲高清视频一视频二视频三| 国产精品无码免费播放| 精品无码无人网站免费视频| 成人av片无码免费天天看| 国产成人亚洲毛片| 99久久婷婷国产综合亚洲| 成人免费网站视频www| 亚洲日本中文字幕天天更新| 亚洲成AV人片久久| 亚洲视频免费一区| 亚洲AV本道一区二区三区四区| 在线观看亚洲天天一三视| 最近中文字幕大全中文字幕免费| 亚洲国产精品不卡在线电影| 亚洲精品黄色视频在线观看免费资源| 日韩高清在线免费观看| 毛片a级毛片免费播放下载| 在线看片韩国免费人成视频| 老汉精品免费AV在线播放| 四虎影视成人永久免费观看视频 | 女同免费毛片在线播放| fc2成年免费共享视频网站| 免费在线视频一区| 国产精品麻豆免费版| 日韩免费观看的一级毛片| 日韩电影免费在线观看视频| 韩国欧洲一级毛片免费| 国产无遮挡无码视频免费软件| 波霸在线精品视频免费观看| 黄色网站软件app在线观看免费| 你是我的城池营垒免费看| 日韩免费电影网址|