zoukankan      html  css  js  c++  java
  • SQLSERVER中char nchar varchar nvarchar的区别

    SQLSERVER中char nchar varchar nvarchar的区别

    1.Unicode给每个字符提供了一个唯一的数字,不论是什么平台不论是什么程序不论是什么语言

    2.Unicode都是双字节的
    3.非Unicode中English是单字节,中文双字节


    A.存储Unicode
    nvarchar(可变长度) n 值必须在 1 到 4,000 之间(含),n指的是字符的长度。存储大小为两倍 n 字节,由于存储的是Unicode数据,
    所以字符数不等于字节数可能多个字节只能存储一个字符
    举例说明:
    DECLARE @VAR1 NVARCHAR(4),
            @VAR2 NVARCHAR(4),
            @VAR3 NVARCHAR(4)
    
            SET @VAR1='1234'
            SET @VAR2='ABCD'
            SET @VAR3='我爱中国'
            
            PRINT @VAR1
            PRINT @VAR2
            PRINT @VAR3
            
    /*
    1234
    ABCD
    我爱中国
    */
    nchar (固定的)
    DECLARE 
            @VAR1 NCHAR (4),
            @VAR2 NCHAR (4),
            @VAR3 NCHAR (8)
    
            SET @VAR1='1234'
            SET @VAR2='ABCD'
            SET @VAR3='我爱中国'
            
            PRINT @VAR1
            PRINT @VAR2
            PRINT @VAR3
    /*
    1234
    ABCD
    我爱中国
    */
    B.可变长度和固定长度的解释
    DECLARE @VAR1 NVARCHAR(6),
            @VAR2 NCHAR(6)
            
            SET @VAR1='123'
            SET @VAR2='123'
            PRINT @VAR1
            PRINT @VAR2 --固定的长度,没有达到固定的长度,剩余部分用空格补充
                        --注意看光标
    
    


    C.存储非Unicode
    varchar 可变长度,非 Unicode 字符数据。n 的取值范围为 1 至 8,000
    
    
    DECLARE @VAR1 VARCHAR(4),
            @VAR2 VARCHAR(4),
            @VAR3 VARCHAR(4)
    
            SET @VAR1='1234'
            SET @VAR2='ABCD'
            SET @VAR3='我爱中国'
            
            PRINT @VAR1
            PRINT @VAR2
            PRINT @VAR3
            
    /*
    1234
    ABCD
    我爱
     */
    
    
    char 固定长度,非 Unicode 字符数据,n 的取值范围为 1 至 8,000,存储大小是 n 个字节 ,由于只能存储ASCII数据,所以字符数等于字节数
    DECLARE @VAR1 CHAR(4),
            @VAR2 CHAR(4),
            @VAR3 CHAR(4)
    
            SET @VAR1='1234'
            SET @VAR2='ABCD'
            SET @VAR3='我爱中国'
            
            PRINT @VAR1
            PRINT @VAR2
            PRINT @VAR3
            
    /*
    1234
    ABCD
    我爱
     */
    总结:
    1.如果站点支持多语言,请考虑使用 Unicode nchar 或 nvarchar 数据类型,以最大限度地消除字符转换问题。
    2.如果列字段的变化很大建议还是用可变长度的,如果变化不大,可以使用固定长度的。
    3.NCHAR  NVARCHAR都要在字符前面加N,避免出现乱码。
    4.char性能好;varchar节省空间;选择方法:10个字节以上的用varchar。
    5.n类型的占用空间大,性能低,如果不准备存中文或中亚文字则尽量避免使用。
    6.尤其向类似工号的字段更不要使用n类型,首先它不会存入中文,其次它可能作为索引,此时对性能的影响就更大。







  • 相关阅读:
    close connection error java.sql.SQLRecoverableException: IO Error: Broken pipe
    Mysql 备份与恢复
    MACBOOK 破解wifi密码
    MAC 安装homebrew
    Linux(CentOS / RHEL 7) 防火墙
    ORA-01031: insufficient privileges
    Oracle登录认证
    ORA-12162: TNS:net service name is incorrectly specified
    lsnrctl: .... cannot restore segment prot after reloc: Permission denied
    CentOS / RHEL 配置yum源
  • 原文地址:https://www.cnblogs.com/mc67/p/4848649.html
Copyright © 2011-2022 走看看