GVKun编程网logo

Oracle 中 nchar,char,varchar 与 nvarchar 区别(oracle中nvarchar和varchar2区别)

4

本文的目的是介绍Oracle中nchar,char,varchar与nvarchar区别的详细情况,特别关注oracle中nvarchar和varchar2区别的相关信息。我们将通过专业的研究、有关数

本文的目的是介绍Oracle 中 nchar,char,varchar 与 nvarchar 区别的详细情况,特别关注oracle中nvarchar和varchar2区别的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解Oracle 中 nchar,char,varchar 与 nvarchar 区别的机会,同时也不会遗漏关于C++ 形参中 const char * 与 char * 以及 char * char ** char a [] char * a [] 的一些解读、char * a, char ** a, char * a[], char a[][], char、char *,char str [n], char **, char *argv [], char (*argv) 区别。、char varchar nvarchar varchar2 nvarchar2的区别的知识。

本文目录一览:

Oracle 中 nchar,char,varchar 与 nvarchar 区别(oracle中nvarchar和varchar2区别)

Oracle 中 nchar,char,varchar 与 nvarchar 区别(oracle中nvarchar和varchar2区别)

char 类型: 对英文 (ASCII) 字符占用 1 个字节,对一个汉字占用 2 个字节,CHAR 存储定长数据很方便,CHAR 字段上的索引效率级高,比如定义 char (10),那么不论你存储的数据是否达到了 10 个字节,都要占去 10 个字节的空间。因为是固定长度,所以速度效率高。 

        Varchar 类型:Varchar 的类型不以空格填满,比如 varchar (100),但它的值只是 "qian", 则它的值就是 "qian"
而 char 不一样,比如 char (100), 它的值是 "qian",而实际上它在数据库中是 "qian"(qian 后共有 96 个空格,就是把它填满为 100 个字节)。 

        由于 char 是以固定长度的,所以它的速度会比 varchar 快得多!但程序处理起来要麻烦一点,要用 trim 之类的函数把两边的空格去掉!

        VARCHAR 存储变长数据,但存储效率没有 CHAR 高。如 果一个字段可能的值是不固定长度的,我们只知道它不可能超过 10 个字符,把它定义为 VARCHAR (10) 是最合算的。VARCHAR 类型的实际长度是它的值的实际长度 + 1。为什么 “+1” 呢?这一个字节用于保存实际使用了多大的长度。

        Nchar 类型和 Nvarchar 类型是怎么一回事呢?为了与其他多种字符的转换,如中文,音标等,对每个英文 (ASCII) 字符都占用 2 个字节,对一个 汉字也占用两个字节,所有的字符都占用 2 个字节。

例如

varchar (n): 变长型字符数据类型,存储最长长度为 8,000 个字符。

举个例子:
insert a select '' 木子 a''
--- 存储长度为 5 个字节,余下的 3 个字节全部释放
insert a select '' 木神易
---- 存储长度为 6 个字节,余下的 2 个字节全部释放
--- 意思是 varchar 变长字符数据类型与存储数据的实际长度是一致的

nvarchar (n): 可变长度 Unicode 数据,其最大长度为 4,000 字符。
字节的存储大小是所输入字符个数的两倍,
就是说它是双字节来存储数据的。
如果存储数据如果存在单字节时,它也是以双字节来占用存储空间的。

varchar 一般适用于英文和数字,Nvarchar 适用中文和其他字符,其中 N 表示 Unicode 常量,可以解决多语言字符集之间的转换问题

C++ 形参中 const char * 与 char * 以及 char * char ** char a [] char * a [] 的一些解读

C++ 形参中 const char * 与 char * 以及 char * char ** char a [] char * a [] 的一些解读

const char *:是指向常量的指针,而不是指针本身为常量,可以不被初始化.该指针可以指向常量也可以指向变量,只是从该指针的角度而言,它所指向的是常量。

const char *name1="John";
char s[]="abc"; name1=s; //正确,name1存放的地址可以改变
char * name2= name1; //不可以,因为name2 和 name1存放的是同一块地址,如果name2地址中的内容改了,则name1的内容也改了,那么name1就不再是指向常量的指针了。

(char * 可以直接赋值给 const char * 反之不可以)

给 char * 前加 const 这样做的好处有 2 点:

  第一,   保证了实参不能被修改,增加了安全性。

  第二,   扩大了该函数的参数的接收范围,使得函数更具通用性。

char * const:指针类型的常量

char *const name1="John";
name1="abc"; //错误,name1指针,不能变,一个指针类型的变量,存放的是地址,所以不能把''"abc"的地址赋给name1
char * name2= name1; //可以

char *:char * 是一维指针,即指向字符变量的指针。字符型指针,指向一个字符。

char **:char** 是二重指针,也就是指向指针变量的指针。

char** 最常使用在 main 函数中:

int main(int argc,char**argv);

等同于 int main (int argc,char*argv [])

指向地址所存储的值不同。
对于 char **p1, *p1 的类型为 char * 型,而 **p1 的类型才是 char 型。
对于 char * 类指针 p2,*p2 就是 char 型。

char a []:char a [20] = "abcd";// 字符数组

char * a []:char *a [] = {"China","French","America","German"};// 指向字符数组的指针

char * a, char ** a, char * a[], char a[][], char

char * a, char ** a, char * a[], char a[][], char

做了软考题,遇到点疑问,查了资料,mark 下:

1:传值调用与传地址调用(传引用):http://blog.sina.com.cn/s/blog_8d37a72b01013v61.html:

2:char * a, char ** a, char * a [], char a [][], char * a [][], char ** a [][], char * a [][][] 等的区别:

http://blog.163.com/digoal@126/blog/static/163877040201271195312138/

char *,char str [n], char **, char *argv [], char (*argv) 区别。

char *,char str [n], char **, char *argv [], char (*argv) 区别。

#include <stdio.h>
#include <string.h>

int main()
{
/*------------------------------------------------*/
#if 0
    char *str = "abcd";  
        //在栈内存中定义一个char *型的变量,内容为字符串“abcd”的首地址,
        //但是字符串“abcd”的内容存在于常量区,内容不可变,
        //在编译的时候就已经确定内容。运行速度慢。

    *str = ''c'';        //错误,常量区内容不可变。
    printf("%s\n", str);
    char st[20] = "abcd";
        //在栈中定义一个char型数组,大小为20个char字节,
        //abcd存在于这个数组中,可以通过指针去改变其中的内容。
        //在运行的时候确定的内容。运行速度快。
    *(st+1) = ''c'';
    printf("%s\n", st);
#endif
/*-------------------------------------------------*/
#if 0
    char *str = "abcd";
    char **argv = &str;
    printf("%p %s %c\n", argv, *argv, **argv);
#endif
#if 1
    
    char *argv[3] = {"abcd","efgh","hig"};
    printf("%p  %p  %p\n",&argv[0], &argv[1], &argv[2]);

    int  arg[3][2] = {1,2,3,4,5,6};
    int (*arc)[2] = arg;
#endif

    return 0;
}          

 

char varchar nvarchar varchar2 nvarchar2的区别

char varchar nvarchar varchar2 nvarchar2的区别

1.char

char的长度是固定的,最大支持2000个字节。

char的长度是固定的,比如说,你定义了char(20),即使你你插入abc,不足二十个字节,数据库也会在abc后面自动加上17个空格,以补足二十个字节;

char是区分中英文的,中文在char中占两个字节,而英文占一个,所以char(20)你只能存20个字母或10个汉字。

char适用于长度比较固定的,一般不含中文的情况

2.varchar/varchar2

varchar是长度不固定的,最大支持4000个字节。

varchar是长度不固定的,比如说,你定义了varchar(20),当你插入abc,则在数据库中只占3个字节。

varchar同样区分中英文,这点同char。

varchar的效率低于char。

varchar2基本上等同于varchar,它是oracle自己定义的一个非工业标准varchar,不同在于,varchar2用null代替varchar的空字符串

varchar/varchar2适用于长度不固定的,一般不含中文的情况

3.nvarchar/nvarchar2

nvarchar和nvarchar2是长度不固定的

nvarchar不区分中英文,比如说:你定义了nvarchar(20),你可以存入20个英文字母/汉字或中英文组合,这个20定义的是字符数而不是字节数

nvarchar2基本上等同于nvarchar,不同在于nvarchar2中存的英文字母也占两个字节

nvarchar/nvarchar2适用于存放中文




orcale 中varchar2 和nvarchar2的区别


在sql ref书中介绍到
1 VARCHAR2(size)
        [BYTE | CHAR]
        Variable-length character string having maximum
        length size bytes or characters. Maximum size is
        4000 bytes, and minimum is 1 byte or 1 character.
        You must specify size for VARCHAR2.
        BYTE indicates that the column will have byte
        length semantics; CHAR indicates that the column
        will have character semantics.
1 NVARCHAR2(size) Variable-length character string having maximum
        length size characters or bytes, depending on the
        choice of national character set. Maximum size is
        determined by the number of bytes required to store
        each character, with an upper limit of 4000 bytes.
        You must specify size for NVARCHAR2.
中文大意:
VARCHAR2(size),可变长度的字符串,其最大长度为 size 个字节。size 的最大值是 4000,而最小值是 1。您必须指定一个 VARCHAR2 的 size。
NVARCHAR2(size),可变长度的字符串,依据所选的国家字符集,其最大长度为 size 个字符或字节。size 的最大值取决于存储每个字符所需要的字节数,其上限为 4000 个字节。您必须为 NVARCHAR2 指定一个 size。

相同点:都是可变长度字符串(char类型是不变长度),都必须指定大小
不同点:VARCHAR2存放的英文字符只占一个字节,而nvarchar2依据所选的字符集,大多为两个

今天关于Oracle 中 nchar,char,varchar 与 nvarchar 区别oracle中nvarchar和varchar2区别的讲解已经结束,谢谢您的阅读,如果想了解更多关于C++ 形参中 const char * 与 char * 以及 char * char ** char a [] char * a [] 的一些解读、char * a, char ** a, char * a[], char a[][], char、char *,char str [n], char **, char *argv [], char (*argv) 区别。、char varchar nvarchar varchar2 nvarchar2的区别的相关知识,请在本站搜索。

本文标签: