mysql varchar vs oracle varchar2

1.错误提示:

mysql的Data truncation: Data too long for column ‘path‘ at row 1

错误原因:

   1.字段过长而导致出错的,

2. 可能是因为数据库里的表设置的字符集不相同。

解决办法:

  varchar(10) ——>varchar(20)

  alter table `cms_activity_test` convert to character set gbk collate gbk_chinese_ci;(单独修改指定表的字符集)

其他参考:

mysql和oracle做数据同步。其中表的一个字段在mysql中设置为varchar(6),Oracle中为varchar2(6)
但mysql中能正常存放的数据同步到oracle中却抱ORA-12899: value too large for column错误。
这是为什么呢?

mysql中varchar(6)代表可以存放6个汉字,6个字母,或6个数字。
oracle中varchar2(6)代表可以中存放6个字节。即oracle中varchar2的长度代表字节数而不是字符数。
mysql中一个汉字占三个字节,Oracle中一个汉字占两个字节。

虽然mysql varchar 和orache varchar2中字段设置相同的长度,但oracle中却存放不下

SQL> insert into toracle values(‘北京蒙迪艾尔‘);
insert into toracle values(‘北京蒙迪艾尔‘)
ORA-12899: value too large for column "SCOTT"."TORACLE"."NAME" (actual: 12, maximum: 6)

-- 在oracle中varchar2(6)中插入6个汉字失败

1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节;2.VARCHAR2把空串等同于null处理,而varchar仍按照空串处理;3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集,大部分情况下建议使用varchar2类型,可以保证更好的兼容性。
时间: 2024-10-13 18:48:14

mysql varchar vs oracle varchar2的相关文章

MySQL实现类似Oracle的序列

MySQL实现类似Oracle的序列 2013-10-22 10:33:35     我来说两句      作者:走过的足迹 收藏    我要投稿 MySQL实现类似Oracle的序列 Oracle一般使用序列(Sequence)来处理主键字段,而MySQL则提供了自增长(increment)来实现类似的目的: 但在实际使用过程中发现,MySQL的自增长有诸多的弊端:不能控制步长.开始索引.是否循环等:若需要迁移数据库,则对于主键这块,也是个头大的问题. 本文记录了一个模拟Oracle序列的方案

Oracle varchar2最大支持长度(转)

oerr ora 0650206502, 00000, "PL/SQL: numeric or value error%s"// *Cause: An arithmetic, numeric, string, conversion, or constraint error// occurred. For example, this error occurs if an attempt is made to// assign the value NULL to a variable de

迁移mysql数据到oracle上

转自:http://www.cnblogs.com/Warmsunshine/p/4651283.html 我是生成的文件里面的master.sql里面的sql,一个一个拷出来的. 迁移mysql数据到oracle上 一.   服务器本地安装Oracle11G或10G 二.   在运行中输入sqlplus /nolog,oracle中创建表空间. 三.   安装完成后在运行中输入 sql developer打开sql developer (就是本机自带的) 四.   选择jdk版路径(jdk版本

ORACLE VARCHAR2最大长度问题

VARCHAR2数据类型的最大长度问题,是一个让人迷惑的问题,因为VARCHAR2既分PL/SQL Data Types中的变量类型,也分Oracle Database中的字段类型.简单的说,要看你在什么应用场景下,否则难以回答VARCHAR2数据类型的最大长度问题. ORACLE数据库字段类型 关于Oracle Database中的字段的VARCHAR2类型的最大长度,我们先看下面的例子: SQL> create table test ( name varchar2(4001) ); crea

MySQL相似于oracle的to_char() to_date()方法1

原文地址:mysql相似于oracle的to_char() to_date()方法作者:Michael mysql日期和字符相互转换方法 date_format(date,'%Y-%m-%d')    -------------->oracle中的to_char(); str_to_date(date,'%Y-%m-%d')     -------------->oracle中的to_date(); %Y:代表4位的年份 %y:代表2为的年份 %m:代表月, 格式为(01……12) %c:代表

Mysql varchar长度问题

http://dinglin.iteye.com/blog/914276 http://www.cnblogs.com/fakis/archive/2011/03/07/1976532.html 如果某一项中设置的是varchar(50) 那么对英文当然是50 那么对中文呢 utf-8的中文占3个字节 那么,这个varchar(50)是不是只能存16个汉字了? 不是这样的,mysql低版本之前是这样的,但是5.0以后就不是了 mysql varchar(50)  不管中文 还是英文 都是存50个

MYSQL VARCHAR排序 CAST ,CONVERT函数 类型转换

自己建表的时候,把一个字段类型创建为varchar(2) ,其实应该建为integer(2)的,但是今天在后台发现排序有问题,varchar排序有问题,所以该怎么解决呢? 示例表结构: 先来看一下,我的表结构 show create table cardserver \G *************************** 1. row *************************** Table: cardserver Create Table: CREATE TABLE `card

mysql - varchar类型与数字的比较和转换

mysql - varchar类型与数字的比较和转换 convert(对象, 目标类型)是mysql中常用的类型转换对象函数.eg: select convert('1.123', decimal(10.4)),结果就是1.1230.对象可以用列名替代. 前两天发现,一个小伙伴之前设计表时把某个表数据类型设计成了varchar,实际用于存储Decimal.我需要用其数据进行过滤筛选 如果文章内容有问题,欢迎评论或与我进行讨论(请注明原因): mail: [email protected] 微信:

Java基础103 Hibernate技术连接MySQL数据和Oracle数据库的配置方法

1.Hibernate技术连接MySQL数据 User.hbm.xml 配置文件 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernat