mysql中nchar_浅谈SQL Server、MySQL中char,varchar,nchar,nvarchar区别

1,定义:

char:    固定长度,存储ANSI字符,不足的补英文半角空格。

nchar:   固定长度,存储Unicode字符,不足的补英文半角空格

varchar:  可变长度,存储ANSI字符,根据数据长度自动变化。

nvarchar: 可变长度,存储Unicode字符,根据数据长度自动变化。

nvarchar(n) :包含 n个字符的可变长度 Unicode 字符数据。n 的值必须介于 1  与  4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。

varchar[(n)]:长度为 n 个字节的可变长度且非 Unicode的字符数据。n 必须是一个介于   1 和 8,000之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。

注意: ANSI主要是以单字节来存储数据,一般适合英文。而我们常用的汉字需要用两个字节来存储,所以就要使用unicode的数据类型,不然读取出来的数据可能会乱码。

2,区别:

①从存储方式上,nvarchar是按字符存储的,而 varchar是按字节存储的;

②从存储量上考虑, varchar比较节省空间,因为存储大小为字节的实际长度,而 nvarchar是双字节存储;

③在使用上,如果存储内容都是英文字符而没有汉字等其他语言符号,建议使用varchar;含有汉字的使用nvarchar,因为nvarchar是使用Unicode编码,即统一的字符编码标准,会减少乱码的出现几率;

④   如果你做的项目可能涉及不同语言之间的转换,建议用nvarchar。

3,优缺点:

Nvarchar优点:判断字符串的时候可以不需要考虑中英文两种字符的差别,可以避免程序中乱码的问题。

缺点:存储英文字符会增大一倍的存储空间.但是在存储代价已经很低廉的情况下,优先考虑兼容性会给你带来更多好处的,效率没有varchar高。

4,为什么要用nvarchar?

有n前缀的,n表示Unicode字符,即所有字符都占两个字节,nchar,nvarchar

字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。

5,有关var的简单介绍:

有var前缀的,表示是实际存储空间是变长的,varchar,nvarchar

所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;而变长字符数据则不会以空格填充,比较例外的是,text存储的也是可变长。

6,如何使用这些类型?

如果你肯定存储的数据长度,而且不包中文的,可以选择char类型。

如果肯定存储的数据长度,但可能包括中文,可以选择nchar类型。

如果不确定存储的数据长度,存储只有英文、数字的最好用varchar

如果不确定存储的数据长度,也有可能有中文,可以选择nvarchar类型,在SQL Server2005中也是比较常用的字符数据类型。

二,MySQL中char,varchar,nchar,nvarchar的区别(援引:http://blog.csdn.net/ivanluc/article/details/5174536)

mysql中char、varchar、nvarchar数据类型的用法区别:

1、char:

固定长度的非 Unicode 字符数据,最大长度为 8,000 个字符。

2、varchar:

可变长度的非 Unicode 数据,最长为 8,000 个字符。

3、nvarchar:

可变长度 Unicode 数据,其最大长度为 4,000 字符。

4、nchar

固定长度的 Unicode 数据,最大长度为 4,000 个字符。

5、char和varchar都是字符串类型的

用Unicode编码的字符串,结果是字符的整数值

用法区别:

文字字段若长度固定,如:身分证号码,就不要用 varchar 或 nvarchar,应该用 char 或 nchar。

支持多语言的站点应考虑使用 Unicode nchar 或 nvarchar 数据类型以尽量减少字符转换问题

文字字段若长度不固定,如:地址,则该用 varchar 或 nvarchar。除了可节省存储空间外,存取硬盘时也会较有效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/443088.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 5.764_RHEL5.764位源码编译安装MySQL-5.5.42遇到的问题

由于MySQL从5.5之后的版本源码编译安装用cmake, make, make install安装,不用./Configure,make,make install 安装,所以要看下系由于MySQL从5.5之后的版本源码编译安装用cmake, make, make install安装,不用./Configure,make,make install 安装,所以要看…

java 判断子类_java判断class是否是某个类的子类或父类

Class c = ArrayList.class; c.isPrimitive(); //判断c是否为基本数据类型 c.isAssignableFrom(List.class); //判断c是否是List类的子类或父类 c.getGenericType(); //得到泛型类型 免费学习视频分享:java视频教程 实例:通过反射得到List 集合中的泛型类型package com.zf.ta…

java转日期_Java时间日期格式转换

import java.util.*;import java.text.*;importjava.util.Calendar;public classVeDate {/*** 获取现在时间**return返回时间类型 yyyy-MM-dd HH:mm:ss*/public staticString getNowDate() {Date currentTime newDate();SimpleDateFormat formatter new SimpleDateFormat("…

java 对比工具_Java几款性能分析工具的对比

在给客户进行应用程序维护的过程中,我注意到一些关于高负载条件下的性能问题。理论上,增加对应用程序的负载会使性能有所下降,但是我认为性能下降的比率远远高于负载的增加,同时我也发现,性能可以通过改变应用程序的逻…

java for循环获取value_Java遍历取出Map集合key-value数据的4种方法

将map集合存数据与取出数据全部放在一个类MapTest中,方便阅读与查看随便创建一个包,在包中新建一个class文件,(也可以不建包,直接新建一个class文件)新建class文件MapTest.java,代码如下:import java.util.HashMap;imp…

as3调用java_关于openamf我用as3链接java程序,并调用相关的方法,但是能够连上,却不能够调用是怎么回事...

我用的openamf做flashremoting服务器是没问题的!这是as的代码!package{importflash.display.Sprite;importflash.net.ObjectEncoding;importcom.riafan.remoting.PendingCall;import...我用的openamf做flash remoting服务器是没问题的!这是as…

phoenix hbase java_java jdbc访问hbase phoenix

上面直接介绍了druid访问hbase phoenix的案例hbase Phoenix整合mybatis DruidDataSource这里还是贴一下jdbc直接访问的方式。public static void main(String[] args) {try {Class.forName("org.apache.phoenix.jdbc.PhoenixDriver");Properties propertiesnew Prope…

mp4v2 写mp4 java_使用mp4v2将H264+AAC合成mp4文件

录制程序要添加新功能:录制CMMB电视节目,我们的板卡发送出来的是RTP流(H264视频和AAC音频),录制程序要做的工作是:(1)接收并解析RTP包,分离出H264和AAC数据流;(2)将H264视频和AAC音频以某种格式封装&#x…

java完全解耦_java-完全解耦

完全解耦:降低代码的限制性,是同一代码能够用到更多的程序中1 packageinterfaces.interfaceprocessor;2 import staticnet.mindview.util.Print.print;34 interfaceProcessor {5 String name();6 Object process(Object input);7 }8 public classApply{9…

java验证xml格式是否正确的是_spring源码附录(1)java实现对XML格式的验证

最近在看spring源码,涉及到xml文档的解析、xml文档的格式验证,发现自己对xml解析的基础较为薄弱,本篇博客复习下DOM方式解析xml(即spring解析xml的方式)。DOM解析XML是将整个XML作为一个对象,占用内存较多。另外一个java官方的XML…

java 批量打印_JAVA批量打印皕杰报表

原标题:JAVA批量打印皕杰报表不使用皕杰报表工具条上的打印按钮,用java怎么实现批量打印皕杰报表呢?解决方案:皕杰报表提供了批量打印的工具类ReportToolkits,ReportToolkits类参考帮助文档-开发指南-javadoc-bios.rep…

java 截串_java字符串截取

import org.apache.commons.lang.stringutils;public class substr{public static void main(string[] args) {string str "1234567890abcdefg";system.out.println("-----------" str.substring(0)); //从字符串索引为0开始截取,一直到字符串…

java json 构造_json 构造和解析

目录:(1)引入jar包;(2)json的构造;(3)json的解析;(4)遍历未知key。(1)java对json的处理,可借助org.json.jar.org.jsonjson20090211(2)json的构造//construct json and output itpublic String constructJson() throws …

java http 上传文件_java利用httpClient实现后台文件上传请求

之前写过基于html和js的文件上传方法java 用springMVC 和HttpServletRequest 两种实现文件上传的方法和httpClient后台执行普通post请求的文章java通过httpClient从接口请求数据入库以及自动生成实体工具类,最近接到一个需求,需要用到后台去调用远程服务…

morse java_华威MORSE,华威数统那个比较好?

其实没什么高下之分了。 毕竟大家都在一个系,上下课交作业都在一起。我个人觉得,数统要比morse更flexible一些。首先你要明白morse和数统课程上的区别在哪里:数统 大一必修数统大一必修共计84CATSmorse大一必修morse大一必修共计120CATS其实差的就是EC10…

java中 以下接口以键_java复习题

1.Java中的long类型占用()个字节。A、1B、2C、4D、82.以下关于继承的叙述不正确的是()。A、在Java中类只允许单一继承B、在Java中一个类只能实现一个接口C、在Java中一个类可以同时继承一个类和实现一个接口D、在Java中接口允许多继承3.4&…

Java游戏有易筋经_易筋经- JavaWeb-1

JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言组成部分:ECMAScript:js基础语法(规定 关键字 运算符 语句 函数…

java导出hbase表数据_通用MapReduce程序复制HBase表数据

编写MR程序,让其可以适合大部分的HBase表数据导入到HBase表数据。其中包括可以设置版本数、可以设置输入表的列导入设置(选取其中某几列)、可以设置输出表的列导出设置(选取其中某几列)。原始表test1数据如下:每个row key都有两个版本的数据,…

java双语试卷_Java程序设计基础(双语)试题题目及答案,课程2021最新期末考试题库,章节测验答案...

若二项式(x+13x)n的展开式中含3x的项是第三项,则n的值是______.(x2+1ax)6(a>0)的展开式中常数项是15,那么展开式中所有项系数和是______.(x2+1ax)6(a>0)的展开式中常数项…

java服务器和linux_在Linux下开一个Java服务器(使用CatServer Pro)

引言Linux开服具有快速,高效,性能等特点,而Windows虽然简单,但是不具备Linux良好的性能。本教程就说明一下简单的Linux开服方式(需要教程的人,如果你学会后,请无偿帮助更多的人。)服务器准备首先。先准备一…