zoukankan      html  css  js  c++  java
  • char、varchar、nvarchar的区别

    一般如果用到中文或者其它特殊字符,我就会使用n开头的类型,否则的话直接使用var开头的。 

    sql server中的varchar和Nvarchar有什么区别?
    varchar(n)
    长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。
    nvarchar(n)
    包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。

    char        100    8个字节,92个空格
    varchar     100    8
    个字节,无空格,最长为1-8000
    nvarchar    100    10
    个字节,无空格,每个汉字为一个字符(适合中文,韩文),但如果是英文的话也是占两个位置,双字节来存储数,最长1-4000,可变长度 Unicode 数据,如果存储数据如果存在单字节时,它也是以双字节来占用存储空间的。

    varchar 对每个英文(ASCII)字符都占用2个字节,对一个汉字也只占用两个字节
    char 
    对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节

    Varchar 的类型不以空格填满,比如varchar(100),但它的值只是"qian",则它的值就是"qian"
    char 不一样,比如char(100),它的值是"qian",而实际上它在数据库中是"qian "(qian后共有96个空格,就是把它填满为100个字节)
    由于char是以固定长度的,所以它的速度会比varchar快得多!但程序处理起来要麻烦一点,要用trim之类的函数把两边的空格去掉

    varchar(4) 可以输入4个字线,也可以输入两个汉字
    nvarchar(4) 可以输四个汉字,也可以输4个字母,但最多四个 

    数据库定义到char类型的字段时 charncharvarcharnvarchartextntext中哪一种呢。 

    数据库定义到char类型的字段时,不知道大家是否会犹豫一下,到底选charncharvarcharnvarchartextntext中哪一种呢?结果很可能是两种,一种是节俭人士的选择:最好是用定长的,感觉比变长能省些空间,而且处理起来会快些,无法定长只好选用定长,并且将长度设置尽可能地小;另一种是则是觉得无所谓,尽量用可变类型的,长度尽量放大些。

      鉴于现在硬件像萝卜一样便宜的大好形势,纠缠这样的小问题实在是没多大意义,不过如果不弄清它,总觉得对不起劳累过度的CPU和硬盘。

    总结陈词:
    1
    、如果数据量非常大,又能100%确定长度且保存只是ansi字符,那么char
    2
    、能确定长度又不一定是ansi字符或者,那么用nchar
    3
    、不确定长度,要查询且希望利用索引的话,用nvarchar类型吧,将它们设到400
    4
    、不查询的话没什么好说的,用nvarchar(4000)
    5
    、性格豪爽的可以只用34,偶尔用用1,毕竟这是一种额外说明,等于告诉别人说,我一定需要长度为X位的数据

  • 相关阅读:
    MD5消息摘要算法的那些事
    关系数据库设计范式介绍(第一范式,第二范式,第三范式)
    C# string byte数组转换解析
    c#中FTP上传下载
    CString/string 区别及其转化
    伟大的神器 pjax 在thinkphp中的应用
    js jquery 判断当前窗口的激活点
    widget 传参数问题
    常见适用的函数
    thinkphp 分页函数
  • 原文地址:https://www.cnblogs.com/Eleanore/p/2518182.html
Copyright © 2011-2022 走看看