湖北省建设厅官方网站石家庄网站推广专家
湖北省建设厅官方网站,石家庄网站推广专家,建行网上银行登录入口官网,广州免费设计网站建设ares-sdk初始开发测试使用的是oracle数据库#xff0c;由于宁波通商的特殊需要#xff0c;必须把数据库环境从oracle转向mysql。 现对转换过程中出现的问题及经验总结如下#xff1a;主键生成策略创建一个专门记录序列的表sequence,记录有当前序列号,序列的间隔如1创建记录当…ares-sdk初始开发测试使用的是oracle数据库由于宁波通商的特殊需要必须把数据库环境从oracle转向mysql。 现对转换过程中出现的问题及经验总结如下主键生成策略创建一个专门记录序列的表sequence,记录有当前序列号,序列的间隔如1创建记录当前序列的表DROP TABLE IF EXISTS sequence;CREATE TABLE sequence (name VARCHAR(50) NOT NULL,current_value INT NOT NULL,increment INT NOT NULL DEFAULT 1,PRIMARY KEY (name)) ENGINEInnoDB;INSERT INTO sequence VALUES (‘MovieSeq‘,3,5);创建一个获取当前序列的functionDROP FUNCTION IF EXISTS currval;CREATE FUNCTION currval (seq_name VARCHAR(50))RETURNS INTEGERCONTAINS SQLBEGINDECLARE value INTEGER;SET value 0;SELECT current_value INTO valueFROM sequenceWHERE name seq_name;RETURN value;END;获取下一个数值..先在sequence里面调用update当前最大数值1然后再调用currval获得当前数值DROP FUNCTION IF EXISTS nextval;DELIMITER $CREATE FUNCTION nextval (seq_name VARCHAR(50))RETURNS INTEGERCONTAINS SQLBEGINUPDATE sequenceSET current_value current_value incrementWHERE name seq_name;RETURN currval(seq_name);END$DELIMITER ;DROP FUNCTION IF EXISTS setval;DELIMITER $CREATE FUNCTION setval (seq_name VARCHAR(50), value INTEGER)RETURNS INTEGERCONTAINS SQLBEGINUPDATE sequenceSET current_value valueWHERE name seq_name;RETURN currval(seq_name);END$DELIMITER ;如果以上语句执行有异常请先执行这句set global logbintrustfunctioncreatorsTRUE;插入时的主键生成mysql: SELECT MMC.NEXTVAL(‘SEQ_MD_ENTITY_ATTRIBUTE‘)oracle: select MMC.SEQ_MD_ENTITY_ATTRIBUTE.nextval from dual日期处理mysql : DATE_FORMAT(NOW(),‘%Y-%m-%d %H:%i:%s‘)oracle: TO_CHAR(SYSDATE,‘YYYY-MM-DD hh24:mi:ss‘)nvl函数mysql: ifnull(A.USER_KPI,0)oracle: NVL(A.USER_KPI,0)to_numberoracle 的 to_numbermysql不需要关键字、保留字涉及到关键字,mysql关键字需要加上号mysql: PARA_VALUE as KEYoracle : PARA_VALUE as KEYrownumUnknown column ‘rownum‘ in ‘where clause‘oracle自定义sql中如果使用了rownum1 mysql中可以写成limit 1大小写问题在oracle中一般情况下不区分大小写但在MySQL中所使用操作系统的大小写敏感性决定了数据库名和表名的大小写敏感性。解决的办法是把mysql的数据库名和oracle的大小写保持一致表名与应用程序中sql字符串中的表名保持一致如果应用程序中字段名用了双引号那请把sql中的字段名大小写与双引号里的字符保持一致。如果你的应用程序所引用的表名、字段没有统一大小写那麻烦就大了。字符串截取mysql:截取log_data从逗号开始之后的字符SELECT substring_index(log_data,‘,‘,-1)FROM nbts.log where event_id‘150002‘ and log_id ‘a2a421734c7e47dd8a8b‘;截取log_data从逗号开始之前的字符SELECT substring_index(log_data,‘,‘,1)FROM nbts.log where event_id‘150002‘ and log_id ‘a2a421734c7e47dd8a8b‘;oracle :截取log_data从逗号开始之后的字符SELECT SUBSTR(log_data, INSTR(log_data, ‘,‘, 1, 1) 1) AS app_ver_idFROM nbts.log where event_id‘150002‘ and log_id ‘a2a421734c7e47dd8a8b‘;截取log_data从逗号开始之前的字符SELECT SUBSTR(log_data,0,INSTR(log_data, ‘,‘, 1, 1) - 1) AS app_ver_idFROM nbts.log where event_id‘150002‘ and log_id ‘a2a421734c7e47dd8a8b‘;字符串格式化mysql:CONCAToracle:TO_CHAR主键长度问题在迁移到mysql后可能会出现主键长度太短需要增加长度。http://www.cnblogs.com/kunpengit/p/4462656.html原文http://www.cnblogs.com/softidea/p/5309299.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/89240.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!