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类型,首先它不会存入中文,其次它可能作为索引,此时对性能的影响就更大。







  • 相关阅读:
    数据库的隔离
    Maven的工程类型有哪些
    Redis中的常用命令哪些
    flume--exec源
    hadoop基本组件原理小总结
    Idea 激活
    hadoop中遇到的各种错误记录
    MySQL认知
    Python爬虫之post请求
    Python爬取ithome的一所有新闻标题评论数及其他一些信息并存入Excel中。
  • 原文地址:https://www.cnblogs.com/mc67/p/4848649.html
Copyright © 2011-2022 走看看