`
a498740995
  • 浏览: 34764 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

(转载)Oracle数据库的varchar2(2)存储一个汉字时提示插入汉字过长问题

 
阅读更多

 昨天在oracle实验课上出现了如题所示的问题:varchar2(2)在存储一个汉字时,提示插入汉字过长,要把它改成3才能存储1个汉字。于是百度google之。

      先做以下实验:

      建一个简单的表var,只有一列name,数据类型为varchar2(6),并向表中插入一条数据。

 

  1. create table var (name varchar2(6));  
  2. insert into var values('测试');  


      查询插入的数据,并且同时查看name列的字符长度和字节长度。结果如下图:

 

 

  1. select u.name, length(u.name), lengthb(u.name)  
  2. from var u;  

 

 

        从结果中可以看出,一个汉字占了三个字节,而不是两个,这跟字符集有关。

        查看字符集的代码和结果如下:

 

  1. select userenv('language'from dual;  

 

          结果显示,本机Oracle的字符集是UTF-8,32位,而不是GBK的16位。UTF-8的每个字符占3个字节(bytes),可以通过修改默认字符集来实现varchar2(2)存储一个汉字。方法如下:

 

  1. SHUTDOWN IMMEDIATE;    
  2. STARTUP MOUNT;   
  3. ALTER SYSTEM ENABLE RESTRICTED SESSION;   
  4.  ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;   
  5. ALTER DATABASE OPEN;   
  6. ALTER DATABASE CHARACTER SET AL32UTF8/ZHS16GBK;  
  7. SHUTDOWN IMMEDIATE;  
  8.   
  9. STARTUP;  

 

     主要参考资料:http://dev.tot.name/db/html/20090322/20090322131055.htm
附:

ORACLE nvarchar2和varchar2的区别

   1、NVARCHAR2中存储中文字时,一个中文字当一个字符来处理
      NVARCHAR2(10)是可以存进去10个汉字的,如果用来存英文也只能存10个字符。
   2、而VARCHAR2中一个中文字当两个字符来处理
      VARCHAR2(10)的话,则只能存进5个汉字,英文则可以存10个

     Oracle中nvarchar2和varchar2的共同点:
     不定长存储,当存储信息长度小于指定的长度,那么就已实际存入的长度为准这一点不像varchar这种定长存储那样浪费空间,比如varchar 指定是10个字符,那么存入5个字符的时候,他会自动填充空格来补齐以达到指定的长度


分享到:
评论

相关推荐

    oracle中varchar2(byte)和varchar2(char).doc

    在Oracle数据库中,`VARCHAR2`是最常用的字符数据类型之一,用于存储变长的字符串。然而,在定义`VARCHAR2`类型时,可以选择指定长度为`BYTE`或`CHAR`。这两种方式看似细微的差别,实际上却对数据存储、性能优化以及...

    Oracle 数据库多语言入库问题的解决方案

    Oracle 数据库多语言入库问题的解决方案是针对企业在国际化进程中遇到的多国语言信息存储难题,尤其是在使用Oracle数据库时,由于字符集的不兼容性导致非中文语言数据入库时出现乱码。Oracle数据库作为全球广泛使用...

    Oracle接收长度大于4000的字符串

    在Oracle数据库中,默认情况下,`VARCHAR2`类型字段的最大长度为4000个字符。当需要处理更长的字符串时(例如,超过4000个字符),可以采用多种方法来解决这一问题。本文将详细介绍如何在.NET环境中处理和传递长度...

    oracle数据库中汉字排序方法

    在日常工作中,我们常常会遇到需要对存储在Oracle数据库中的中文数据进行排序的情况。例如,在一个企业管理系统的组织机构表中,可能需要按照部门名称的拼音顺序来展示所有部门的信息。为了实现这一目标,Oracle提供...

    oracle 教程 中文教程 数据库 教程

    ### Oracle 教程:中文教程与数据库教程 #### 前言 Oracle 是一款非常流行的数据库管理系统,在企业和大型组织中广泛使用。对于那些处理大量数据的系统而言,Oracle 提供了丰富的工具和技术来优化性能。本文将重点...

    Oracle10g US7ASCII 编码中文无法导入sqlserver问题解决

    2. **创建数据库链接 (DBLink)**:接下来,在另一个更高版本的 Oracle 数据库(如 Oracle11g)中创建一个 DBLink,以便能够跨数据库查询 Oracle10g 数据库。 ```sql CREATE DATABASE LINK ORCL10 CONNECT TO ...

    管理信息化ORACLE完美Oracle数据库知识学习文档总汇.pdf

    Oracle数据库是世界上最广泛使用的数据库管理系统之一,尤其在企业级应用中占据重要地位。这份"管理信息化ORACLE完美Oracle数据库知识学习文档总汇"涵盖了Oracle数据库的基础知识,包括数据定义语言(DDL)和数据...

    完美Oracle数据库知识学习文档总汇.docx

    Oracle数据库是一种广泛使用的关系型数据库管理...这份文档提供了一个很好的起点,可以帮助初学者快速掌握Oracle数据库的基本概念。在实际应用中,还需要结合具体需求和最佳实践,不断提升对Oracle数据库的运用能力。

    mysql和oracle数据库之间的转换工具(支持各种类型数据库)

    标题中的“mysql和oracle数据库之间的转换工具”指的是能够帮助用户将MySQL数据库的数据高效、准确地迁移到Oracle数据库的软件。这样的工具通常提供图形化界面,使得操作更为直观,无需深入理解底层的SQL语法和数据...

    oracle 数据库性能调优技术 1 中文

    例如,在执行`SELECT * FROM t1 WHERE c1 = 1 AND c2 = 2`这样的查询时,尽管`c1`和`c2`列上都有各自的索引,但通常只会使用其中一个索引来加速查询。如果想要同时利用这两个索引的信息,应该考虑创建一个包含`c1`和...

    Oracle--数据库系统基本操作.docx

    Oracle数据库系统是企业级的关系型数据库管理系统,广泛应用于数据存储、数据分析和业务应用等领域。本文将详细介绍Oracle数据库的安装步骤、基本操作以及相关程序组的功能。 首先,安装Oracle数据库涉及以下关键...

    Oracle存储过程-1.docx

    因此,一个VARCHAR2(10)的列可以存储2个汉字,因为每个汉字占用2字节,总共不超过4000字节。 在Oracle中,数据类型的长度单位是字节,这意味着在规划表结构时,需要考虑到字符集和可能的多字节字符。使用DUMP函数...

    Oracle Sql基础(beginning oracle sql中文版)

    Oracle SQL支持多种数据类型,如CHAR、VARCHAR2(可变长度字符串)、NUMBER(数字)、DATE(日期时间)、CLOB(大对象,用于存储文本)、BLOB(大对象,用于存储二进制数据)等。选择正确的数据类型对于数据的存储和...

    Oracle_数据库应用教程课件_第2章 SQL基础.ppt

    例如,`NUMBER(5,2)`定义一个总位数为5,其中2位为小数的数字字段。 【数据定义语言(DDL)】 DDL用于创建和修改数据库对象,如表、视图、索引等。例如,`CREATE TABLE`语句用于创建新的表,`ALTER TABLE`用于修改...

    oracle 中几种字符类型

    VARCHAR2 是 Oracle 自己定义的一个非工业标准 VARCHAR,不同在于,VARCHAR2 用 NULL 代替 VARCHAR 的空字符串。 三、NVARCHAR 类型 NVARCHAR 类型是可变长度的 Unicode 字符类型,长度可以变化,例如 NVARCHAR(20...

    Oracle中文使用手册.zip

    这份"Oracle中文使用手册.zip"包含的"Oracle中文使用手册.pdf"无疑为想要理解和掌握Oracle数据库的用户提供了宝贵的资源。以下将从多个方面对Oracle数据库进行详细阐述。 一、Oracle数据库简介 Oracle数据库是由...

    oracle中文基本操作教程

    Oracle数据库系统是全球广泛使用的大型关系型数据库管理系统之一,它为数据存储、管理和处理提供了强大的支持。本教程将深入浅出地介绍Oracle的基本操作,包括语法、函数的使用,并通过实例帮助你提升对Oracle的理解...

    oracle入门很简单06.zip

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其在企业级数据存储和管理中扮演着重要角色。"Oracle入门很简单06.zip"这个压缩包显然旨在帮助初学者快速理解和掌握Oracle数据库的基础知识,特别是关于字符...

Global site tag (gtag.js) - Google Analytics