1.函数修改
字符串转时间的函数: to_date(#{createEndTime},‘yyyy/mm/dd‘) ===>str_to_date(#{createBeginTime},‘%Y/%m/%d‘)
时间转字符串的函数: to_char(OPERATE_TIME,‘yyyy-MM-dd hh24:mi:ss‘)====> date_format(OPERATE_TIME,‘%Y-%m-%d %H:%i:%S‘)
字符串连接函数: ‘%‘||#{name}||‘%‘ ===== >CONCAT(‘%‘,#{name},‘%‘)
获取当前时间函数: sysdate =========> now()
2.序列
有些主键ID使用序列,mysql没有序列但是有auto_increment字段
2.1 将字段修改为自增
ALTER TABLE T_BLOGROLL_INFO MODIFY id INT AUTO_INCREMENT;
插入时: nextval ----》 null
但是有的insert语句,有两个字段使用了序列, mysql一个表只能主键使用自增,所以考虑模拟序列
2.2 模拟序列
使用表和函数模拟
--新建序列DROP TABLE IF EXISTS sequence; CREATE TABLE sequence ( id INT UNSIGNED NOT NULL AUTO_INCREMENT,name VARCHAR(50) NOT NULL, current_value INT NOT NULL, increment INT NOT NULL DEFAULT 1, PRIMARY KEY (name) ) ENGINE=InnoDB;--当前值DROP FUNCTION IF EXISTS currval; DELIMITER $ CREATE FUNCTION currval (seq_name VARCHAR(50)) RETURNS INTEGERLANGUAGE SQL DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT ‘‘BEGINDECLARE value INTEGER; SET value = 0; SELECT current_value INTO value FROM sequenceWHERE name = seq_name; RETURN value; END$ DELIMITER ;--下个值DROP FUNCTION IF EXISTS nextval; DELIMITER $ CREATE FUNCTION nextval (seq_name VARCHAR(50)) RETURNS INTEGERLANGUAGE SQL DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT ‘‘BEGINUPDATE sequenceSET current_value = current_value + increment WHERE 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 INTEGERLANGUAGE SQL DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT ‘‘BEGINUPDATE sequenceSET current_value = value WHERE name = seq_name; RETURN currval(seq_name); END$ DELIMITER ;
使用
INSERT INTO sequence VALUES (‘TestSeq‘, 0, 1);----添加一个sequence名称和初始值,以及自增幅度 添加一个名为TestSeq 的自增序列SELECT SETVAL(‘TestSeq‘, 10);---设置指定sequence的初始值 这里设置TestSeq 的初始值为10SELECT CURRVAL(‘TestSeq‘); --查询指定sequence的当前值 这里是获取TestSeq当前值SELECT NEXTVAL(‘TestSeq‘); --查询指定sequence的下一个值 这里是获取TestSeq下一个值